spark与hbase交互错误:org.apache.htrace

在CDH中,开发的spark连接Hbase的时候,往往会出现找不到org.apache.htrace包。

具体错误如下:

      ERROR TableInputFormat: java.io.IOException: 

      java.lang.reflect.InvocationTargetException

     Caused by: java.lang.NoClassDefFoundError: org/apache/htrace/Trace

     Caused by: java.lang.ClassNotFoundException: org.apache.htrace.Trace

问题原因:

CDH的Spark的classpath中引入的是/opt/cloudera/parcels/CDH/jars/htrace-core-3.0.4.jar,而这个版本的时候,htrace还是org.htrace,而3.1.0的时候已经贡献给Apache了,改叫org.apache.htrace了。

解决方法:

方法一:手动修改作业提交机器的/etc/alternatives/spark-conf/classpath.txt,在最后添上/opt/cloudera/parcels/CDH-5.4.8-1.cdh5.4.8.p0.4/jars/htrace-core-3.1.0-incubating.jar即可。(个人推荐使用)

方法二:通过提交命令的方式提交参数--conf spark.executor.extraClassPath;

#!/bin/bash

HBASE_HOME=/opt/cloudera/parcels/CDH/lib/hbase

SPARK_CLASSPATH="$HBASE_HOME/conf/:$HBASE_HOME/hbase-client.jar:$HBASE_HOME/hbase-protocol.jar:$HBASE_HOME/lib/htrace-core.jar:$HBASE_HOME/lib/htrace-core-3.1.0-incubating.jar"

spark-submit --conf spark.executor.extraClassPath=$SPARK_CLASSPATH --class com.test.Main  test-jar-with-dependencies.jar

你可能感兴趣的:(spark与hbase交互错误:org.apache.htrace)