我可以在脚本中编写一个 sqoop 导入命令并在 oozie 作为协调器工作流中执行它吗?
我已经厌倦了这样做,发现一个错误说找不到 sqoop 命令,即使我给出了 sqoop 执行的绝对路径
script.sh 如下
sqoop import --connect 'jdbc:sqlserver://xx.xx.xx.xx' -username=sa -password -table materials --fields-terminated-by '^' -- --schema dbo -target-dir /user/hadoop/CFFC/oozie_materials
我已将文件放在 HDFS 中,并为 oozie 提供了路径。工作流程如下:
<workflow-app xmlns='uri:oozie:workflow:0.3' name='shell-wf'>
<start to='shell1' />
<action name='shell1'>
<shell xmlns="uri:oozie:shell-action:0.1">
<job-tracker>${jobTracker}</job-tracker>
<name-node>${nameNode}</name-node>
<configuration>
<property>
<name>mapred.job.queue.name</name>
<value>${queueName}</value>
</property>
</configuration>
<exec>script.sh</exec>
<file>script.sh#script.sh</file>
</shell>
<ok to="end" />
<error to="fail" />
</action>
<kill name="fail">
<message>Script failed, error message[${wf:errorMessage(wf:lastErrorNode())}]</message>
</kill>
<end name='end' />
oozie 返回错误,因为在 mapreduce 日志中找不到 sqoop 命令。
这是一个好习惯吗?
谢谢