Oozie的+ Sqoop:JDBC驱动程序JAR位置(Oozie + Sqoop: JDBC Dr

2019-08-22 11:47发布

我有一个6节点基于Cloudera的Hadoop集群,我试图从Oozie的一个sqoop动作连接到Oracle数据库。

我抄我的ojdbc6.jar到sqoop LIB位置(这对我来说正好处于:/opt/cloudera/parcels/CDH-4.2.0-1.cdh4.2.0.p0.10/lib/sqoop/lib/ )中的所有节点上,并已验证了我可以运行所有的6个节点一个简单的“sqoop EVAL”。

现在,当我运行使用了Oozie的sqoop动作相同的命令,我得到“无法加载数据库驱动程序类:oracle.jdbc.OracleDriver”

我已阅读这篇文章关于使用共享库,它是有道理的我,当我们谈论我的任务/动作/工作流程具体的依赖关系。 但是,我看到一个JDBC驱动程序的安装作为一个推广到sqoop,所以我认为它属于中sqoop安装库。

现在的问题是,虽然sqoop看到这个罐子ojdbc6我已经投入到它的lib文件夹,为什么我的Oozie的工作流不看吗?

这是不是预期还是我失去了一些东西?

顺便说一句,你有什么家伙想在那里是一个JDBC驱动程序jar合适的位置?

提前致谢!

Answer 1:

JDBC驱动程序JAR(它依赖于任何jar)应该在你的Oozie的sharelib上HDFS文件夹。 我正在Hortonworks数据平台1.2,而不是4.2 Cloudera的等等细节可能会有所不同,但我的JDBC驱动程序位于/user/oozie/share/lib/sqoop 。 这应该允许您通过Oozie的JDBC的运行Sqoop。

这是没有必要把JDBC驱动程序的jar数据节点上的sqoop库。 在我SETUPT我不能运行一个简单的sqoop eval我的数据节点的命令行。 我明白了,为什么你认为这会工作的逻辑。 JDBC驱动程序的jar必须在HDFS的原因是,所有的数据节点可以访问它。 您的解决方案应该完成相同的目标。 我不熟悉不够与Oozie的内部工作说为什么使用sharelib的作品,但你的解决方案不。



Answer 2:

在CDH5,你应该把罐子 '/用户/ Oozie的/股/ lib目录/ lib目录_ $ {}时间戳/ sqoop',并在这之后,你必须更新sharelib或重新启动Oozie的。

更新sharelib:

oozie admin -oozie http://localhost:11000/oozie -sharelibupdate



Answer 3:

如果您使用的CDH-5 JDBC驱动程序JAR(它依赖于任何jar)应该在HDFS上的“/用户/ Oozie的/股/ lib中/ lib_timestamp / sqoop”文件夹中。



Answer 4:

我面临着同样的问题,它无法找到mysql jar 。 我使用了Cloudera 4.4在这甚至oozie admin -oozie http://localhost:11000/oozie -sharelibupdate命令将不起作用

要解决我曾跟随下面的步骤问题:

  1. 创建在用户Huehdfs并提供管理员权限

  2. 利用Hue UI上传jar/user/oozie/share/lib/sqoop hdfs路径,也可以使用下面的命令:

hadoop put /var/lib/sqoop2/mysql-connector-java.jar /user/oozie/share/lib/sqoop

  1. 一旦jar被置于运行oozie命令。


文章来源: Oozie + Sqoop: JDBC Driver Jar Location