Hive 使用SQOOP在配置单元中进行增量更新,将数据追加到表的中间

Hive 使用SQOOP在配置单元中进行增量更新,将数据追加到表的中间,hive,sqoop,mapper,Hive,Sqoop,Mapper,我试图使用以下命令将新数据从SQLServer追加到配置单元 sqoop import --connect 'jdbc:sqlserver://10.1.1.12;database=testdb' --username uname --password passwd --table testable --where "ID > 11854" --hive-import -hive-table hivedb.hivetesttable --fields-terminated-by ',' -

我试图使用以下命令将新数据从SQLServer追加到配置单元

sqoop import --connect 'jdbc:sqlserver://10.1.1.12;database=testdb' --username uname --password passwd --table testable --where "ID > 11854" --hive-import -hive-table hivedb.hivetesttable --fields-terminated-by ',' -m 1
此命令附加数据

但是当我跑的时候

select * from hivetesttable;
它不会在末尾显示新数据

这是因为用于附加新数据的sqoop import语句导致映射器输出为part-m-00000-copy

因此,配置单元表目录中的数据如下所示

第m-00000部分

第m-00000部分-副本

第m-00001部分

第m-00002部分


有没有办法通过更改映射器的名称将数据追加到末尾?

与任何其他关系数据库类似,Hive不保证任何顺序,除非显式使用ORDERBY子句

你在分析中是正确的-这些数据出现在“中间”的原因是蜂巢会根据字典分类排序一个接一个地读取一个文件,而QooP只需将它们在列表中间的某个文件命名即可。

但是,此操作是完全有效的-Sqoop将数据追加到配置单元表中,并且由于您的查询没有任何明确的ORDERBY语句,因此结果对ORDER没有任何保证。事实上,配置单元本身可以更改此行为,并根据创建时间读取文件,而不会破坏任何兼容性

我还想看看这是如何影响您的用例的?我假设列出所有行的查询只是一个测试查询。您对实际生产查询有任何问题吗