创建Sqoop Hive导入作业

时间:2019-03-05 14:05:03

标签: hadoop import hive sqoop hive-table

我成功地使用Sqoop将一个oracle表临时导入了Hive表。现在,我想使用用于临时导入的确切参数来创建并保存Sqoop作业。

但是,如果我说:

sqoop job --create myjob --import \ --connect jdbc:mysql://host.port/foo \ --username myUserName \ --password-file file:///myfile.pwd \ --table mytable \ --create-hive-table \ --hive-import \ --hive-database my_hive_db \ --hive-table my_hive_table \ --fields-terminated-by '|' \ --hive-drop-import-delims \ --m 1

我收到一个错误:

19/03/05 14:56:41 ERROR tool.BaseSqoopTool: Error parsing arguments for job: 19/03/05 14:56:41 ERROR tool.BaseSqoopTool: Unrecognized argument: --import 19/03/05 14:56:41 ERROR tool.BaseSqoopTool: Unrecognized argument: --connect 19/03/05 14:56:41 ERROR tool.BaseSqoopTool: Unrecognized argument: jdbc:mysql:@host:port/foo 如果我删除所有\,仍然无法使用。

如何为Hive导入定义具有所有必需参数的Sqoop作业?

3 个答案:

答案 0 :(得分:0)

似乎是bash逃逸问题。该行末尾的反斜杠“ \”字符后不应有空格。您可以通过以下方式看到多余的空格:

cat -A sqoop_script.sh 

答案 1 :(得分:0)

不确定您提供的示例是否错误,但是我始终使用稍微不同的语法,其中import并不是作业内部的标志。

documentation中,这两种语法对我来说似乎很熟悉:

sqoop import (generic-args) (import-args)
sqoop-import (generic-args) (import-args)

答案 2 :(得分:0)

您在space--之间缺少 import

尝试以下语法:

sqoop job --create myjob  -- import \
--connect jdbc:mysql://host.port/foo \
--username myUserName \
--password-file file:///myfile.pwd \
--table mytable \
--create-hive-table \
--hive-import \
--hive-database my_hive_db \
--hive-table my_hive_table \
--fields-terminated-by '|' \
--hive-drop-import-delims \
--m 1