我犯了个错误 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"
分区表已存在。
2条答案
按热度按时间1bqhqjot1#
配置单元分区密钥(
creation_date
在您的示例中,当您使用hive-import
. 当您试图用分区在配置单元中创建表时,您将不会在表架构中包含分区列。这同样适用于sqoophive-import
也。根据你的sqoop命令,我猜
creation_date
列存在于sqlserver表中。如果是,您可能会遇到此错误为了解决这个问题,我有两个解决方案:
确保分区列不在sqlserver表中。所以,当sqoop创建配置单元表时,它包含分区列及其值作为配置单元仓库中的目录。
更改sqoop命令,包括一个自由形式查询,以获取除partiton列和do hive import之外的所有列。下面是这个解决方案的一个例子
例子:
另一种方法:您也可以尝试按不同步骤执行任务:
在配置单元中创建分区表(示例:city\u partition)
使用配置单元导入将数据从rdbms加载到普通配置单元表(示例:city)
使用insert overwrite,将数据从普通配置单元表(city)导入分区表(city\u partition),如下所示:
INSERT OVERWRITE TABLE city_partition PARTITION (CountryCode='USA') SELECT id, name, district, population FROM city;
1wnzp6jl2#
它也可以应用于: