Oozie - Spark Action > 在哪里添加 ojdbc.jar 以访问 oracle JDBC

Oozie - Spark Action > where to add ojdbc.jar to access oracle JDBC

我正尝试在 Oozie 中为以下命令创建一个 Spark 动作:

spark-submit --master yarn --class com.spark.sql.jdbc.SparkDFtoOracle --jars /home/oracle/ojdbc7.jar --driver-class-path /home/oracle/ojdbc7.jar testOracleJdbcDF.jar > tmp

Oozie 中有 N 个错误。我使用了 oozie-examples.tar.gz.

的 workflow.xml 模板

谁能帮我解决这个问题?

有几种添加依赖jar 的方法。我会在 HDFS 中的 workflow.xml 旁边创建一个名为 lib 的目录,并将 jars(ojdbc7.jar) 放在那里。 Oozie 将自动使这些 jar 可用于该工作流程中的所有操作。

workflow.xml

<workflow-app name="sample-wf" xmlns="uri:oozie:workflow:0.1">
    <action name="myfirstsparkjob">
        <spark xmlns="uri:oozie:spark-action:0.1">
            <job-tracker>[JOB-TRACKER]</job-tracker>
            <name-node>[NAME-NODE]</name-node>
            <prepare>
                <delete path="${jobOutput}"/>
            </prepare>
            <master>yarn</master>
            <mode>client<mode>
            <name>Spark DF to Oracle</name>
            <class>com.spark.sql.jdbc.SparkDFtoOracle</class>
            <jar>hdfs/path/to/testOracleJdbcDF.jar</jar>
            <spark-opts>--driver-class-path path_to-some_other_jar </spark-opts>
        </spark>
        <ok to="myotherjob"/>
        <error to="errorcleanup"/>
    </action>
</workflow-app>

Spark Action Extension in Ozzie

关于您的 spark 提交:

在您的 spark 中,不需要提交 --driver-class-path,因为该值与 --jars 相同。检查 --driver-class-path 描述:

Extra class path entries to pass to the driver. Note that jars added with --jars are automatically included in the classpath.

在 Maven 中安装 Ojdbc7.jar 并在 POM.xml 文件中添加以下依赖项

<dependency>
   <groupId>oracle.jdbc.driver</groupId>
   <artifactId>oraclethin</artifactId>
   <version>12c</version>
</dependency>

使用依赖项构建 jar。