Hive on spark 执行加载不了spark的jars

在尝试执行Hive中的Spark任务时遇到错误,表现为无法创建Spark客户端。问题源于Hive无法加载Spark的相关JAR包。解决方案是在hive-env.sh中设置SPARK_HOME并正确指定SPARK_JARS路径,确保Hive能够找到并使用Spark的依赖。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

问题展示
Launching Job 1 out of 1
In order to change the average load for a reducer (in bytes):
  set hive.exec.reducers.bytes.per.reducer=<number>
In order to limit the maximum number of reducers:
  set hive.exec.reducers.max=<number>
In order to set a constant number of reducers:
  set mapreduce.job.reduces=<number>
Failed to execute spark task, with exception 'org.apache.hadoop.hive.ql.metadata.HiveException(Failed to create Spark client for Spark session 8ffa76f2-907e-4092-987d-6c89279f3c5b)'
FAILED: Execution Error, return code 30041 from org.apache.hadoop.hive.ql.exec.spark.SparkTask. Failed to create Spark client for Spark session 8ffa76f2-907e-4092-987d-6c89279f3c5b

在这里插入图片描述
最后用一下命令查找日志:

hive --hiveconf hive.root.logger=DEBUG,console

找到报错原因:

2020-07-03T05:42:51,624 ERROR [1c9bb3c6-d486-4968-8b94-c35812f50e75 main] spark.SparkTask: Failed to execute spark task, with exception 'org.apache.hadoop.hive.ql.metadata.HiveException(Failed to create Spark client for Spark session 1afe33ae-3b62-468c-8d2f-f04269421ed7)'
org.apache.hadoop.hive.ql.metadata.HiveException: Failed to create Spark client for Spark session 1afe33ae-3b62-468c-8d2f-f04269421ed7
 at org.apache.hadoop.hive.ql.exec.spark.session.SparkSessionImpl.getHiveException(SparkSessionImpl.java:221)
 at org.apache.hadoop.hive.ql.exec.spark.session.SparkSessionImpl.open(SparkSessionImpl.java:92)
 at org.apache.hadoop.hive.ql.exec.spark.session.SparkSessionManagerImpl.getSession(SparkSessionManagerImpl.java:115)
 at org.apache.hadoop.hive.ql.exec.spark.SparkUtilities.getSparkSession(SparkUtilities.java:136)
 at org.apache.hadoop.hive.ql.exec.spark.SparkTask.execute(SparkTask.java:115)
 at org.apache.hadoop.hive.ql.exec.Task.executeTask(Task.java:205)
 at org.apache.hadoop.hive.ql.exec.TaskRunner.runSequential(TaskRunner.java:97)
 at org.apache.hadoop.hive.ql.Driver.launchTask(Driver.java:2664)
 at org.apache.hadoop.hive.ql.Driver.execute(Driver.java:2335)
 at org.apache.hadoop.hive.ql.Driver.runInternal(Driver.java:2011)
 at org.apache.hadoop.hive.ql.Driver.run(Driver.java:1709)
 at org.apache.hadoop.hive.ql.Driver.run(Driver.java:1703)
 at org.apache.hadoop.hive.ql.reexec.ReExecDriver.run(ReExecDriver.java:157)
 at org.apache.hadoop.hive.ql.reexec.ReExecDriver.run(ReExecDriver.java:218)
 at org.apache.hadoop.hive.cli.CliDriver.processLocalCmd(CliDriver.java:239)
 at org.apache.hadoop.hive.cli.CliDriver.processCmd(CliDriver.java:188)
 at org.apache.hadoop.hive.cli.CliDriver.processLine(CliDriver.java:402)
 at org.apache.hadoop.hive.cli.CliDriver.executeDriver(CliDriver.java:821)
 at org.apache.hadoop.hive.cli.CliDriver.run(CliDriver.java:759)
 at org.apache.hadoop.hive.cli.CliDriver.main(CliDriver.java:683)
 at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
 at sun.reflect.NativeMethodAcce

截图如下
在这里插入图片描述

最后分析是因为hive加载不了spark的jars

hive-env.sh 添加

export SPARK_HOME=/opt/module/spark-2.4.5-bin-without-hive
export SPARK_JARS=""
for jar in `ls $SPARK_HOME/jars`; do
    export SPARK_JARS=$SPARK_JARS:$SPARK_HOME/jars/$jar
done
export HIVE_AUX_JARS_PATH=/opt/module/hadoop-3.1.3/share/hadoop/common/hadoop-lzo-0.4.21-SNAPSHOT.jar$SPARK_JARS
<think>我们正在处理一个Hive on Spark执行时的错误。用户没有提供具体的错误信息,但根据标题,我们可以推测可能是与Spark配置或环境相关的问题。然而,由于用户之前提到了`java.lang.NoClassDefFoundError: org/apache/spark/SparkConf`,并且现在是在执行Hive on Spark时报错,所以可能是类似的问题,但具体错误可能不同。 由于用户没有提供具体的错误信息,我们只能根据常见问题给出一般性解决方案。同时,我们需要注意,Hive on Spark的配置需要确保Hive能够正确识别和调用Spark。 常见错误和解决方案: 1. **Spark依赖问题**:Hive需要Spark的jar包在类路径中。 - 确保在Hive的配置中设置了`spark.home`(指向Spark的安装目录)。 - 确保Hive能够访问到Spark的jar包,通常可以通过设置`HIVE_AUX_JARS_PATH`环境变量或者将Spark的jar包复制到Hive的lib目录下。 2. **版本兼容性问题**:HiveSpark的版本必须兼容。可以查看Hive官方文档中关于支持的Spark版本。 3. **配置问题**:在hive-site.xml中正确配置Spark相关属性,例如: ```xml <property> <name>spark.master</name> <value>yarn</value> </property> <property> <name>spark.eventLog.enabled</name> <value>true</value> </property> <!-- 其他必要的Spark配置 --> ``` 4. **环境变量问题**:确保在启动Hive时,环境变量中包含了Spark的路径。 5. **权限问题**:如果运行在YARN上,确保用户有权限提交Spark作业。 6. **日志分析**:查看Hive的日志(通常位于/tmp/<username>/hive.log)和Spark的日志,以获取更详细的错误信息。 由于没有具体错误,我们只能提供一般性步骤。如果用户能提供具体错误信息,可以更精确地定位问题。 §§相关问题§§ 1. 如何配置Hive使用Spark作为执行引擎? 2. Hive on Spark常见的版本兼容性问题有哪些? 3. 如何检查Hive on Spark的配置是否正确? 4. 在YARN集群上运行Hive on Spark需要哪些额外配置? 5. 如何收集Hive on Spark作业的日志进行调试?</think>### Hive on Spark 执行报错分析 出现执行错误通常与以下原因相关,请按步骤排查: #### 常见原因及解决方案 1. **Spark 版本不兼容** ```bash # 检查Hive支持的Spark版本范围 grep "spark.version" $HIVE_HOME/conf/spark-defaults.conf # 推荐使用Hive官方兼容版本(如Hive 3.x + Spark 3.x) ``` 2. **依赖包冲突** - 删除冲突JAR包: ```bash rm $HIVE_HOME/lib/guava-*.jar # 常见冲突包 cp $SPARK_HOME/jars/guava-*.jar $HIVE_HOME/lib/ ``` 3. **配置缺失** - 在 `hive-site.xml` 中必须配置: ```xml <property> <name>spark.master</name> <value>yarn</value> <!-- 或 local --> </property> <property> <name>spark.home</name> <value>/path/to/spark</value> </property> ``` 4. **资源分配问题** ```bash # 增加executor内存 (hive-site.xml) hive> SET spark.executor.memory=4g; ``` 5. **类路径错误** ```bash # 确保Hive启动脚本包含Spark路径 export SPARK_HOME=/opt/spark export ADD_JARS=$SPARK_HOME/jars/* ``` #### 诊断步骤 1. 检查日志: ```bash tail -f /tmp/<user>/hive.log ``` 2. 验证环境: ```bash hive> SET spark.master; # 确认配置生效 ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值