我有一个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合适的位置?
提前致谢!
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的作品,但你的解决方案不。
在CDH5,你应该把罐子 '/用户/ Oozie的/股/ lib目录/ lib目录_ $ {}时间戳/ sqoop',并在这之后,你必须更新sharelib或重新启动Oozie的。
更新sharelib:
oozie admin -oozie http://localhost:11000/oozie -sharelibupdate
如果您使用的CDH-5 JDBC驱动程序JAR(它依赖于任何jar)应该在HDFS上的“/用户/ Oozie的/股/ lib中/ lib_timestamp / sqoop”文件夹中。
我面临着同样的问题,它无法找到mysql jar
。 我使用了Cloudera 4.4在这甚至oozie admin -oozie http://localhost:11000/oozie -sharelibupdate
命令将不起作用
要解决我曾跟随下面的步骤问题:
创建在用户Hue
与hdfs
并提供管理员权限
利用Hue UI
上传jar
到/user/oozie/share/lib/sqoop
hdfs
路径,也可以使用下面的命令:
hadoop put /var/lib/sqoop2/mysql-connector-java.jar /user/oozie/share/lib/sqoop
- 一旦
jar
被置于运行oozie
命令。