启用蜂巢支持后,Spark作业在oozie中失败了

问题描述

我正在尝试安排带有火花操作和启用的Hive支持的oozie工作流程。 在没有蜂巢支持的情况下,这是普通的火花工作,时间动作正常运行。 添加配置单元支持后,我可以通过提交火花来运行火花作业。但是当我尝试在oozie中运行时失败了

Unable to instantiate SparkSession with Hive support because Hive classes are not found.

下面是创建Spark会话的代码

static SparkSession initializeSparkSession() {
    SparkSession sparkSession = SparkSession.builder().appName("DataLoad").enableHiveSupport().getorCreate();
    
    sparkSession.sparkContext().conf().set("spark.sql.sources.partitionOverwriteMode","dynamic");
    sparkSession.sparkContext().conf().set("hive.exec.dynamic.partition.mode","nonstrict");
    
    return sparkSession;
}

下面是依赖项:

<dependency>
        <groupId>org.apache.spark</groupId>
        <artifactId>spark-core_2.11</artifactId>
        <version>2.2.1</version>
        <scope>provided</scope>
    </dependency>

    <dependency>
        <groupId>org.apache.spark</groupId>
        <artifactId>spark-sql_2.11</artifactId>
        <version>2.2.1</version>
        <scope>provided</scope>
    </dependency>

     <dependency>
        <groupId>org.apache.spark</groupId>
        <artifactId>spark-hive_2.11</artifactId>
        <version>2.2.1</version>
        <scope>provided</scope>
    </dependency>

下面是oozie工作流程操作:

<action name="data_load">
    <spark xmlns="uri:oozie:spark-action:0.1">
        <job-tracker>${jobTracker}</job-tracker>
        <name-node>${nameNode}</name-node>
        <master>yarn</master>
        <mode>cluster</mode>
        <name>DataMovement</name>
        <class>{package}.Job</class>
        <jar>${sparkJarPath}/s3_etl-0.0.1.jar</jar>
        <spark-opts>--files=/etc/spark/conf/hive-site.xml --conf spark.yarn.dist.files=file:/etc/spark/conf/hive-site.xml</spark-opts>
        <arg>${market}</arg>
        <arg>${market_lag}</arg>
        <arg>${data_bucket}</arg>
        <arg>${trigger_bucket}</arg>
        <arg>ALL</arg>
    </spark>
    <ok to="notifyJobSuccess" />
    <error to="notifyJobFailure" />
</action>

我是否需要在share-lib目录中添加更多内容删除任何内容

-编辑- 如果我没有在全局属性添加配置单元,则会出现上述错误。 如果我们将蜂巢添加到全局属性

<global>
    <job-tracker>${jobTracker}</job-tracker>
    <name-node>${nameNode}</name-node>
    <configuration>
        <property>
            <name>mapred.job.queue.name</name>
            <value>${queueName}</value>
        </property>
        <property>
            <name>oozie.action.sharelib.for.spark</name>
            <value>spark,oozie,hive</value>
        </property>
    </configuration>
</global>

然后,如果引发另一个异常

ERROR ApplicationMaster: User class threw exception: java.lang.NoSuchFieldError: HIVE_STATS_JDBC_TIMEOUT

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...