当我运行以下语句时,我收到错误Unrecognized argument --hive-partition-key
:
sqoop import
--connect 'jdbc:sqlserver://192.168.56.1;database=xyz_dms_cust_100;username-hadoop;password=hadoop'
--table e_purchase_category
--hive_import
--delete-target-dir
--hive-table purchase_category_p
--hive-partition-key "creation_date"
--hive-partition-value "2015-02-02"
分区表存在。
答案 0 :(得分:1)
creation_date
时, Hive分区键(示例中为hive-import
)不应该是数据库表的一部分。当您尝试使用分区在hive中创建表时,您不会在表模式中包含分区列。这同样适用于sqoop hive-import
。
根据你的sqoop命令,我猜你的SQLServer表中存在creation_date
列。如果是,您可能会收到此错误
ERROR tool.ImportTool: Imported Failed:
Partition key creation_date cannot be a column to import.
要解决此问题,我有两个解决方案:
示例:强>
sqoop import
--connect jdbc:mysql://localhost:3306/hadoopexamples
--query 'select City.ID, City.Name, City.District, City.Population from City where $CONDITIONS'
--target-dir /user/XXXX/City
--delete-target-dir
--hive-import
--hive-table City
--hive-partition-key "CountryCode"
--hive-partition-value "USA"
--fields-terminated-by ','
-m 1
另一种方法: 您还可以尝试以不同的步骤执行任务:
INSERT OVERWRITE TABLE city_partition
PARTITION (CountryCode='USA')
SELECT id, name, district, population FROM city;
答案 1 :(得分:0)
sqoop import --connect jdbc:mysql://localhost/akash
--username root
--P
--table mytest
--where "dob='2019-12-28'"
--columns "id,name,salary"
--target-dir /user/cloudera/
--m 1 --hive-table mytest
--hive-import
--hive-overwrite
--hive-partition-key dob
--hive-partition-value '2019-12-28'