1.问题描述
- 最近需要用hive,并且配置hive on spark,然后运行的时候各种各样的类找不到报错,例如
1. .NoClassDefFoundError: org/apache/hadoop/shaded/com/ctc/wstx/io/InputBootstrapper
2. NoClassDefFoundError: org/apache/log4j/spi/Filter
2. 方案解决
- 检测 spark-env配置
设置 ${spark_dir}/conf/spark-env.sh的内容, ${hadoop_dir}为hadoop的安装目录。$(${hadoop_dir}/bin/hadoop classpath)为一个命令,获取hadoop的class path 可以放在shell执行
HADOOP_CONF_DIR=${hadoop_dir}/etc/hadoop
YARN_CONF_DIR=${hadoop_dir}/etc/hadoop
SPARK_DIST_CLASSPATH=$(${hadoop_dir}/bin/hadoop classpath)
- 检测 spark-jars
2.1 检测hive-site的地址
<property>
<name>spark.yarn.jars</name>
<value>hdfs://${namenode}:8020/spark-jars/*</value>
</property>
<property>
<name>hive.execution.engine</name>
<value>spark</value>
</property>
- 检测 spark-jars 需要确认 spark-jars上传的jar包, 是spark-3.2.2-bin-without-hadoop/jars中的jar包
hdfs dfs -ls /spark-jars/