Oozie - 运行sqoop异常:无法加载db驱动程序类:com.mysql.jdbc.Driver

时间:2014-08-25 17:20:51

标签: mysql hadoop sqoop oozie hortonworks-data-platform

我正在尝试通过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驱动程序?

如果你们认为我做错了什么或者你需要更多信息,请告诉我。

感谢您的时间。

2 个答案:

答案 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>