错误无法识别的参数--hive-partition-key

问题描述 投票:2回答:2

运行以下语句时出现错误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"

已存在分区表。

hadoop import hive sqoop
2个回答
1
投票

Hive分区键(在您的示例中为creation_date)在使用hive-import时不应成为数据库表的一部分。当您尝试在具有分区的配置单元中创建表时,您不会在表架构中包括分区列。同样适用于sqoop hive-import

基于您的sqoop命令,我想您的SQLServer表中存在creation_date列。如果是,则可能会出现此错误

ERROR tool.ImportTool: Imported Failed: 
Partition key creation_date cannot be a column to import.

要解决此问题,我有两种解决方法:

  1. 请确保SQLServer表中没有分区列。因此,当sqoop创建配置单元表时,它将包括该分区列及其值作为配置单元仓库中的目录。
  2. 通过包含自由格式查询]来更改sqoop命令>,以使所有列均期望partiton列并进行配置单元导入。以下是此解决方案的示例]
  3. 示例:

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

另一种方法:

您也可以尝试通过不同的步骤完成任务:
  1. 在配置单元中创建分区表(示例:city_partition)
  2. 使用蜂巢导入将数据从RDBMS加载到sqoop到普通蜂巢表(示例:城市)中>
  3. 使用插入覆盖,将数据从普通配置单元表(城市)导入分区表(city_partition),如:
  4. INSERT OVERWRITE TABLE city_partition PARTITION (CountryCode='USA') SELECT id, name, district, population FROM city;

也可以应用:

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'

0
投票

也可以应用:

© www.soinside.com 2019 - 2024. All rights reserved.