我成功地使用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作业?
答案 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