如何为sqoop导入作业

时间:2016-09-08 15:08:26

标签: sqoop

使用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

1 个答案:

答案 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

检查您是否在首次执行和后续执行中发现任何差异。