【问题标题】:sqoop import command issue with partition key分区键的 sqoop 导入命令问题
【发布时间】:2019-05-21 15:35:08
【问题描述】:

我正在尝试使用 sqoop 命令在 hive 表中导入数据。 hive 表按 date2 分区,日期格式为“9/6/2017 00:00:00”。当我使用 sqoop 命令使用日期列导入数据时,它会引发错误。

Teradata 表: 第 1 列、第 2 列、第 3 列 1,9/6/2017 00:00:00, qwe 2,9/20/2017 00:00:00, wer

Sqoop 命令:

sqoop import \
--connect jdbc:teradata://<server>/database=<db_name> \
--connection-manager org.apache.sqoop.teradata.TeradataConnManager \
--username un \
--password 'pwd' \
--table <tbl_name> \
--where "cast(date2 as Date) > date '2017-09-07' and cast(date2 as Date) < date '2017-09-20'" \
--hive-import --hive-table <db_name>.<tbl_name> \
--hive-partition-key date2 \
-m1 

错误

错误 teradata.TeradataSqoopImportHelper:运行 Teradata 导入作业时出现异常 java.lang.IllegalArgumentException:错误的文件系统:/usr/tarun/date2=1900-01-01 00%3A00%3A00

【问题讨论】:

  • 我在 hive 中创建了一个外部表,使用 date2 列进行分区。

标签: hive sqoop sqoop2


【解决方案1】:

当我尝试将您的命令翻译为多行时,您似乎错过了一个 \ 字符,这就是它看起来在抱怨的原因。 --hive-import 不以“\”结尾。命令中也缺少 hive 表名

sqoop import \
--connect jdbc:teradata:///database= \ 
--connection-manager org.apache.sqoop.teradata.TeradataConnManager \
--username un \
--password 'pwd' \
--table \
--where "cast(date2 as Date) > date '2017-09-07' and cast(date2 as Date) < date '2017-09-20'" \
--hive-import \
--hive-table tarun121 \
--hive-partition-key date2 \
-m1

替代方法是尝试 create-hive-table 命令

sqoop create-hive-table \
--connect jdbc:teradata:://localhost:port/schema \
--table hive_tble_name \ 
--fields-terminated-by ',';

如果这能解决问题,请告诉我。

【讨论】:

  • 嗨,罗伊。我能够成功运行没有分区键的代码。但错误在于分区键 date2 。这就是它显示错误的地方。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-07-12
  • 2014-07-23
  • 1970-01-01
  • 2017-03-21
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多