分享

spark setMaster “local”可以 spark://master:7077就不行。

remarkzhao 发表于 2018-3-13 14:10:49 [显示全部楼层] 回帖奖励 阅读模式 关闭右栏 8 28456
本帖最后由 remarkzhao 于 2018-3-13 14:12 编辑

请问这是什么原因   我的code是
用spark bulkload数据到hbase  以HFile的形式
报的异常
java.io.IOException: org.apache.spark.SparkException: Failed to register classes with Kryo      
Caused by: java.lang.ClassNotFoundException: org.apache.hadoop.hbase.io.ImmutableBytesWritable

刚才在hadoop-env.sh hadoop-classpath加了hbase的jar路径。 一个master,两个workder都加了。还是不行。

已有(8)人评论

跳转到指定楼层
easthome001 发表于 2018-3-13 14:35:01
spark的local模式中,是否添加了hbase包。在集群的环境中,配置下classpath,在里面能找到hbase的所有包。当然
回复

使用道具 举报

langke93 发表于 2018-3-13 14:40:20
spark的CLASSPATH配置了吗?
export SPARK_CLASSPATH=
最好将相关hbase包,复制到spark试试。当然做好备份
回复

使用道具 举报

remarkzhao 发表于 2018-3-13 15:44:35
easthome001 发表于 2018-3-13 14:35
spark的local模式中,是否添加了hbase包。在集群的环境中,配置下classpath,在里面能找到hbase的所有包。 ...

不行。。在spark/conf/spark-env.sh  配置 export SPARK_CLASSPATH=/usr/local/tool/hbase/lib 还是不行。
回复

使用道具 举报

remarkzhao 发表于 2018-3-13 15:49:01
langke93 发表于 2018-3-13 14:40
spark的CLASSPATH配置了吗?
export SPARK_CLASSPATH=
最好将相关hbase包,复制到spark试试。当然做好备 ...

不行。。在spark/conf/spark-env.sh  配置 export SPARK_CLASSPATH=/usr/local/tool/hbase/lib 还是不行。
回复

使用道具 举报

langke93 发表于 2018-3-13 16:42:21
remarkzhao 发表于 2018-3-13 15:49
不行。。在spark/conf/spark-env.sh  配置 export SPARK_CLASSPATH=/usr/local/tool/hbase/lib 还是不行 ...

尝试复制相关包。当然做好备份
下面操作【对应到自己的版本】
[mw_shl_code=bash,true]cd /usr/local/spark/lib
mkdir hbase
cd hbase
cp /usr/local/hbase/lib/hbase*.jar ./
cp /usr/local/hbase/lib/guava-12.0.1.jar ./
cp /usr/local/hbase/lib/htrace-core-3.1.0-incubating.jar ./
cp /usr/local/hbase/lib/protobuf-java-2.5.0.jar ./[/mw_shl_code]

[mw_shl_code=bash,true]cd /usr/local/spark/conf
vim spark-env.sh[/mw_shl_code]
在文件最前面增加下面一行内容:
[mw_shl_code=bash,true]export SPARK_CLASSPATH=$SPARK_CLASSPATH:/usr/local/spark/lib/hbase/*:/usr/local/hbase/conf
[/mw_shl_code]
重启下集群。然后在执行试试
回复

使用道具 举报

remarkzhao 发表于 2018-3-13 17:43:30
langke93 发表于 2018-3-13 16:42
尝试复制相关包。当然做好备份
下面操作【对应到自己的版本】
[mw_shl_code=bash,true]cd /usr/local/s ...

还是不行……
回复

使用道具 举报

langke93 发表于 2018-3-13 20:11:23

这样肯定是没有问题的。要么操作失误,要么问题在其它地方。需要楼主根据自己的集群情况判断。
例如看下hbase和hadoop进程是否都启动了。还有集群的环境等因素。

回复

使用道具 举报

remarkzhao 发表于 2018-3-14 10:02:25
langke93 发表于 2018-3-13 20:11
这样肯定是没有问题的。要么操作失误,要么问题在其它地方。需要楼主根据自己的集群情况判断。
例如看下 ...

明白了。这个问题解决了,新问题来了。。

Caused by: java.lang.ClassCastException: cannot assign instance of scala.collection.immutable.List$SerializationProxy to field org.apache.spark.sql.execution.FilterExec.otherPreds of type scala.collection.Seq in instance of org.apache.spark.sql.execution.FilterExec
这个异常是在idea里 setMaster(“spark://master:7077“) 模式下发生

我这个业务是这样从关系型数据库读出数据集,对数据集的某些指定的字段,它们的值为空的的整条记录过滤掉,过滤完的数据集进行拼接,格式为

<ImmutableWritable,KeyValue>, ImmutableWritable就是我指定的某几个字段拼接起来的rowkey,而KeyValue,Key是rowkey,Value:列族+列名+列值

这样生成文件 然后进行ImmutableWritable的排序 排完序再生成HFile 然后saveAsNewHadoopFile  最后load到hbase

第二个问题发生在我把代码打成jar包上传到集群上用spark on yarn的形式  出现的异常

Caused by: java.io.IOException: Added a key not lexically larger than previous.
Current cell = 0|000024379500|10_000024379500|10_00118486_020160126083616/f:AGE/1520991994837/Put/vlen=2/seqid=0,
      lastCell = 3|000529786000|10_000529786000|10_01988604_20161024151804/f:WARD_NAME/1520991994837/Put/vlen=3/seqid=0


上面两种情况在local模式下不会出现问题,均能成功bulkload到hbase
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

推荐上一条 /2 下一条