7

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

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

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

所有其他表记录都很好。

请帮我解决这个问题。

4

1 回答 1

8

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

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

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

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

谢谢

于 2012-02-09T06:33:20.217 回答