Существует несколько способов добавления банок зависимости. Я бы создал каталог с именем lib рядом с workflow.xml
в HDFS и разместил там банки (ojdbc7.jar
). Oozie автоматически сделает эти банки доступными для всех действий в этом рабочем процессе.
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
О искру представить:
В вашей искрой представить --driver-class-path
не требуется, потому что, как значение такое же, как --jars
. check --driver-class-path
описание:
Элементы пути дополнительного класса, которые необходимо передать водителю. Обратите внимание, что добавленные jars с --jars автоматически включаются в путь к классам.
Я бы порекомендовал не идти с 'fat jar' из-за размера и времени для копирования в кластер. копирование неразрешенных ящиков maven в общем местоположении ozzie и использование его для всех искровых приложений. – mrsrinivas
В моем случае мы используем кусок жира, установленный ojdbc7.jar в локальной системе, добавили зависимость в файле pom. Размер банки не более 3 МБ. При этом нам не нужно делать никаких дополнений в. –