【问题标题】:oozie fails with Could not load db driver class: oracle.jdbc.OracleDriveroozie 失败,无法加载数据库驱动程序类:oracle.jdbc.OracleDriver
【发布时间】:2017-10-10 10:42:41
【问题描述】:

使用 oozie 执行 sqoop 导出命令(在 shell 脚本中)时出现以下错误。

“java.lang.RuntimeException:无法加载数据库驱动类:oracle.jdbc.OracleDriver”

从 cli(边缘节点)导出的 sqoop 工作正常。

我已将 ojdbc6.jar 添加到以下位置。 /opt/cloudera/parcels/CDH-5.7.1-1.cdh5.7.1.p0.11/lib/sqoop/lib/

(HDFS 位置) /user/oozie/share/lib/sqoop/ 和 /user/oozie/share/lib/lib_20161215195933/sqoop

我还在我的 oozie job.properties 文件中设置了 oozie.use.system.libpath=true

如果我缺少任何设置,请指导我。 log content

感谢和问候, 索纳利

【问题讨论】:

    标签: sqoop oozie


    【解决方案1】:
    1. 确保将文件上传到目录 /user/oozie/share/lib/sqoop(对于 Cloudera 和 HDP,它可能类似于 /user/oozie/share/lib/lib_${timestamp}/sqoop)。
    2. 检查 ojdbc6.jar 文件是否正确 - 检查它是否包含 OracleDriver.class 并确保文件大小正常。下载时可能出错。
    3. 检查对 ojdbc6.jar 文件的权限(最终,您可以尝试为该文件授予 755 权限)。检查谁是文件的所有者 - 默认情况下应该是 oozie。
    4. 通过执行以下命令更新 Oozie sharelib(在 Oozie Server 所在的主机上运行此命令):

      sudo -u oozie oozie admin -oozie http://<Oozie_Server_Host>:11000/oozie -sharelibupdate
      
    5. 为 sqoop 验证 sharelib:

      sudo -u oozie oozie admin -oozie http://<Oozie_Server_Host>:11000/oozie -shareliblist sqoop*
      
    6. 您可以随时重新启动 Oozie 服务。它应该更新 sharelib。
    7. 在 HDFS 中的 workflow.xml 旁边创建一个名为 lib 的目录,并将 jar 放入其中。 Oozie 将自动使这些 jar 可用于该工作流程中的所有操作。

    Cloudera 用户应检查此article。特别是“最后一件事”段落。

    【讨论】:

    • @SonaliGhorpade 我在第一个答案中添加了更多信息。希望对你有帮助。
    • 我已经完成了上述所有操作,直到第 6 步仍然是同样的问题。以下是文件状态 -rwxr-xr-x 2 oozie hdfs 2739670 2017-10-12 03:21 /user/oozie/share/lib/lib_20161215195933/sqoop/ojdbc6.jar 如果我在 workflow.xml 中添加 jar 文件,我需要从 job.properties 文件中删除以下两行吗? oozie.libpath=${nameNode}/user/oozie/share/lib oozie.use.system.libpath=true
    • 不,你不应该。它是逗号分隔的列表,因此您可以尝试在其他位置设置。我在答案中添加了有趣的文章,您应该检查一下。关于 Cloudera 中的 Oozie sherelib,您必须了解的一切(不仅如此,HDP 也非常相似)。
    猜你喜欢
    • 2018-08-04
    • 2020-01-29
    • 1970-01-01
    • 1970-01-01
    • 2021-09-03
    • 2012-12-27
    • 1970-01-01
    • 2015-05-08
    • 1970-01-01
    相关资源
    最近更新 更多