我正在尝试将数据附加到hive中已存在的表。首先使用以下命令将表从MS-SQL Server导入到配置单元。
Sqoop命令:
sqoop import --connect "jdbc:sqlserver://XXX.XX.XX.XX;databaseName=mydatabase" --table "my_table" --where "Batch_Id > 100" --username myuser --password mypassword --hive-import
现在我想将数据附加到配置单元中的同一个现有表中,其中“Batch_Id< 100” 我使用以下命令:
sqoop import --connect "jdbc:sqlserver://XXX.XX.XX.XX;databaseName=mydatabase" --table "my_table" --where "Batch_Id < 100" --username myuser --password mypassword --append --hive-table my_table
然而,此命令成功运行也会更新HDFS数据,但是当您连接到hive shell并查询该表时,附加的记录将不可见。 Sqoop更新了hdfs “/ user / hduser / my_table”上的数据,但“/ user / hive / warehouse / batch_dim”上的数据未更新。
如何重新解决这个问题。
此致 Bhagwant Bhobe
答案 0 :(得分:1)
尝试使用
sqoop import --connect "jdbc:sqlserver://XXX.XX.XX.XX;databaseName=mydatabase"
--table "my_table" --where "Batch_Id < 100"
--username myuser --password mypassword
--hive-import --hive-table my_table
当您使用--hive-import
时请勿使用--append
参数。
答案 1 :(得分:0)
您正在使用的Sqoop命令(--import)仅用于将记录摄取到HDFS中。您需要使用--hive-import标志将记录导入Hive。
有关详细信息和其他导入配置选项,请参阅http://sqoop.apache.org/docs/1.4.2/SqoopUserGuide.html#_importing_data_into_hive(当然,您可能希望将文档引用更改为您的Sqoop版本)。