如何传递sqoop导入作业的java属性

xzv2uavs  于 2021-06-03  发布在  Sqoop
关注(0)|答案(1)|浏览(337)

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

但是通过这种方式,属性将传递给当前执行,而不是后续作业执行。
有没有一种方法可以传递java属性 -Dsqoop job --create myjob -- import 命令?
在cdh5.5上试用sqoop1.4.6

ve7v8dk2

ve7v8dk21#

根据sqoop文件,
sqoop job命令的语法:

sqoop job (generic-args) (job-args) [-- [subtool-name] (subtool-args)]

现在 -D 是泛型arg和 --create myjob 是作业参数
所以你必须使用如下命令:

sqoop job -Doraoop.oracle.rac.service.name=myservice --create myjob ....

对于当前和所有后续作业执行,它的行为方式应该相同。
使用以下方法检查作业的配置:

sqoop job --show myjob

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

相关问题