使用sqoop导入时可以传递java属性。 就我而言,我需要传递
-Doraoop.oracle.rac.service.name=myservice
与--direct
一起使用sqoop直接连接到oracle RAC。
现在我需要使用相同的参数创建一个sqoop作业,但是当我尝试发布
时sqoop job --create myjob -- import -Doraoop.oracle.rac.service.name=myservice --direct --connect...
抱怨说
ERROR tool.BaseSqoopTool: Error parsing arguments for import:
ERROR tool.BaseSqoopTool: Unrecognized argument: -Doraoop.oracle.rac.service.name=myservice
....
无论我将-D
放在哪里,它都无效,而使用直接sqoop导入则无效。
它只能以下列方式运作
sqoop job -Doraoop.oracle.rac.service.name=myservice --create myjob -- import ...
但是以这种方式,属性被传递给当前执行而不是后续的作业执行。
有没有办法通过-D
将java属性传递给sqoop job --create myjob -- import
命令?
在cdh 5.5上尝试使用sqoop 1.4.6
答案 0 :(得分:1)
根据Sqoop docs,
sqoop job命令的语法:
sqoop job (generic-args) (job-args) [-- [subtool-name] (subtool-args)]
现在-D
generic-arg 而--create myjob
job-arg
所以你必须使用如下命令:
sqoop job -Doraoop.oracle.rac.service.name=myservice --create myjob ....
对于当前和所有后续作业执行,它应该以相同的方式运行。
使用以下方法检查作业的配置:
sqoop job --show myjob
检查您是否在首次执行和后续执行中发现任何差异。