[英]Scheduling a sqoop job in oozie through Shell script using Hue
我可以使用 Hue 在 Oozie 中运行 sqoop 命令。 但是,当我尝试通过将它放在 shell 脚本中来运行相同的 sqoop 命令时,我收到如下错误
Stdoutput 2016-05-20 10:52:13,241 ERROR [main] sqoop.Sqoop (Sqoop.java:runSqoop(181)) - Got exception running Sqoop:
java.lang.RuntimeException: Could not load db driver class: oracle.jdbc.OracleDriver
我已经包含了 jdbc jar 文件,就像我在直接运行 sqoop 命令时所做的那样。 我不明白为什么它不适用于 shell 脚本。
这是 Hue 生成的工作流程
<workflow-app name="My_Workflow" xmlns="uri:oozie:workflow:0.5">
<start to="shell-ca31"/>
<kill name="Kill">
<message>Action failed, error message[${wf:errorMessage(wf:lastErrorNode())}]</message>
</kill>
<action name="shell-ca31">
<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>default</value>
</property>
<property>
<name>oozie.use.system.libpath</name>
<value>true</value>
</property>
<property>
<name>oozie.libpath</name>
<value>/user/oozie/libext</value>
</property>
</configuration>
<exec>sqoopoozie.sh</exec>
<file>/user/yxr6907/sqoopoozie.sh#sqoopoozie.sh</file>
<archive>/user/oozie/libext/ojdbc7.jar#ojdbc7.jar</archive>
<capture-output/>
</shell>
<ok to="End"/>
<error to="Kill"/>
</action>
<end name="End"/>
</workflow-app>
当您使用 shell 操作时,不会将 sqoop 的 jars 导入到类路径中。 我能够通过将 jar 添加到类路径中来解决它。 然后,我导出 HADOOP_CLASSPATH 和 sqoop 工作。
使用以下内容:
ojdbc7.jar
放入文件export HADOOP_CLASSPATH=${PWD}/ojdbc7.jar
您可以使用以下属性代替步骤 1 将 jar 加载到类路径中:
oozie.use.system.libpath=true
oozie.libpath=/path/to/jars
两种方式都需要导出 HADOOP_CLASSPATH。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.