hive - 在 Hive 中导入表后显示错误的计数

标签 hive sqoop

我从 MS SQL Server 在 Hive 中导入了近 10 个表。
但是,当我尝试在其中一个表中交叉检查 Hive 中的记录时,我在运行查询时发现了更多记录(从 tblName 中选择计数(*);)。

然后我删除了那个表并再次将它导入到 Hive 中。我在控制台日志中观察到(检索到 203 条记录)。
然后我再次尝试 (select count(*) from tblName;) 并且我得到的计数为 298。

我不明白为什么会发生这种情况。查询中是否有任何错误,或者是由于 sqoop-import 的某些错误命令而发生的。

所有其他表记录都很好。

请帮我解决这个问题。

最佳答案

我从邮件列表中得到了这个问题的解决方案,我想分享一下。
他们的回复是这样的:

我们过去遇到过类似的问题 - hive 中的表似乎比 sqoop 报告导入的行数多,而这些行实际上在数据库中可用。

我们这边描述的问题是导出数据中的错误字符导致导出的测试 CSV 文件中的断行。例如,我们的一些行包含带有换行符的数据。由于几行导出的行被拆分为更多行,因此配置单元的行数似乎多于导入的行数。您可能遇到了类似的问题。我们已经通过使用参数 --hive-drop-import-delims 解决了这个问题(或者您可以使用 --hive-delims-replacement )。对于语义和用法,请考虑查看手册:

http://incubator.apache.org/sqoop/docs/1.4.0-incubating/SqoopUserGuide.html#id1765770

谢谢

关于hive - 在 Hive 中导入表后显示错误的计数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9191966/

相关文章:

apache-spark - 如何让 Spark Streaming 写入它的输出以便 Impala 可以读取它?

sql - 如何将表与列表交叉连接?

csv - 将 CSV 文件(包含空字符串和重复项)导入 DynamoDB

hadoop - Sqoop 与 SQL Anywhere 17 连接

mysql - 在 SQOOP 导入中避免倾斜并确定最佳映射器数量

hive - 从 HIVE 表中动态删除分区

mysql - 我可以像在 hive 中那样更改所选数据库的 mysql 提示符吗?

mysql - Sqoop - 如果使用 order by 和 limit 1,则导入最大值查询失败

hadoop - 我怎样才能做到这一点而不必一张一张地导入表格?

hadoop - 使用安装在Apache Hadoop和Cloudera Hadoop中的apache sqoop有什么区别?