我正在尝试通过Oozie在HDP沙箱2.1上执行sqoop导出。当我运行Oozie作业时,我得到以下java运行时异常。
'>>>现在调用Sqoop命令行>>>
7598 [main] WARN org.apache.sqoop.tool.SqoopTool - $ SQOOP_CONF_DIR 没有在环境中设置。无法检查额外的 配置。
7714 [main] INFO org.apache.sqoop.Sqoop - 运行Sqoop版本: 1.4.4.2.1.1.0-385
7760 [main] WARN org.apache.sqoop.SqoopOptions - 字符参数 ' \吨'有多个字符;只会使用第一个。
7791 [main] WARN org.apache.sqoop.ConnFactory - $ SQOOP_CONF_DIR has 没有在环境中设置。无法检查额外的 配置。
7904 [main] INFO org.apache.sqoop.manager.MySQLManager - 准备 使用MySQL流式结果集。
7905 [main] INFO org.apache.sqoop.tool.CodeGenTool - 开头代码 代
7946 [main] ERROR org.apache.sqoop.Sqoop - 运行异常 Sqoop:java.lang.RuntimeException:无法加载db驱动程序类: com.mysql.jdbc.Driver拦截System.exit(1)
我复制了jdbc驱动文件" mysql-connector-java.jar"到Oozie的共享库文件夹,我相信是" / usr / lib / oozie / share / lib / sqoop /"。我已经重新启动了我的沙箱,并尝试再次使用Oozie执行导出,但仍然会出现同样的错误。
当我尝试仅通过sqoop执行时,导出工作完全正常,所以我认为Oozie需要自己的驱动程序集。
我的问题是,我想将哪个Oozie目录复制到我的jdbc驱动程序?
如果你们认为我做错了什么或者你需要更多信息,请告诉我。
感谢您的时间。
答案 0 :(得分:2)
通常对于Oozie来说,sharelib目录是HDFS上的/ user / oozie / share / lib /,其中" oozie"将是用于启动Oozie Server的用户的名称。我不知道HDP沙箱2.1的情况,但您可以使用ps命令来解决这个问题。
对于sqoop操作所需的jar,我认为你应该将jar复制到/ user / oozie / share / lib / sqoop /文件夹。
答案 1 :(得分:0)
我遇到了同样的问题,但是在查询对我有用之后放了驱动程序类(不知道为什么)
<action name="action_name">
<sqoop xmlns="uri:oozie:sqoop-action:0.2">
<job-tracker>${jobTracker}</job-tracker>
<name-node>${nameNode}</name-node>
<configuration>
<property>
<name>oozie.hive.defaults</name>
<value>${envpath}/hive-default.xml</value>
</property>
<property>
<name>pool.name</name>
<value>${etlPoolName}</value>
</property>
<property>
<name>oozie.launcher.pool.name</name>
<value>${oozieLauncherPoolName}</value>
</property>
</configuration>
<arg>import</arg>
<arg>--connect</arg>
<arg>*******</arg>
<arg>--username</arg>
<arg>*********</arg>
<arg>--password</arg>
<arg>********</arg>
<arg>--verbose</arg>
<arg>--query</arg>
<arg>select * from table </arg>
<arg>--split-by</arg>
<arg>****</arg>
<arg>--target-dir</arg>
<arg>*****</arg>
<arg>--driver</arg>
**<arg>com.teradata.jdbc.TeraDriver</arg>**
<arg>--fetch-size=1000000</arg>
<file>${libpath}/tdgssconfig.jar</file>
<file>${libpath}/terajdbc4.jar</file>
</sqoop>
<ok to="next_action_name"/>
<error to="send-email"/>
</action>