about云开发

 找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 8112|回复: 8

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

[复制链接]

32

主题

3

听众

0

收听

中级会员

Rank: 3Rank: 3

积分
661
发表于 2018-3-13 14:10:49 | 显示全部楼层 |阅读模式
本帖最后由 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都加了。还是不行。

67

主题

5

听众

5

收听

高级会员

Rank: 4

积分
1734

最佳新人活跃会员热心会员推广达人

发表于 2018-3-13 14:35:01 | 显示全部楼层
spark的local模式中,是否添加了hbase包。在集群的环境中,配置下classpath,在里面能找到hbase的所有包。当然

171

主题

34

听众

36

收听

高级会员

Rank: 4

积分
3970

最佳新人活跃会员热心会员

发表于 2018-3-13 14:40:20 | 显示全部楼层
spark的CLASSPATH配置了吗?
export SPARK_CLASSPATH=
最好将相关hbase包,复制到spark试试。当然做好备份
欢迎加入about云群425860289432264021 ,云计算爱好者群,关注about云腾讯认证空间

32

主题

3

听众

0

收听

中级会员

Rank: 3Rank: 3

积分
661
 楼主| 发表于 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 还是不行。

32

主题

3

听众

0

收听

中级会员

Rank: 3Rank: 3

积分
661
 楼主| 发表于 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 还是不行。

171

主题

34

听众

36

收听

高级会员

Rank: 4

积分
3970

最佳新人活跃会员热心会员

发表于 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 还是不行 ...

尝试复制相关包。当然做好备份
下面操作【对应到自己的版本】
[Bash shell] 纯文本查看 复制代码
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 ./


[Bash shell] 纯文本查看 复制代码
cd /usr/local/spark/conf
vim spark-env.sh

在文件最前面增加下面一行内容:
[Bash shell] 纯文本查看 复制代码
export SPARK_CLASSPATH=$SPARK_CLASSPATH:/usr/local/spark/lib/hbase/*:/usr/local/hbase/conf

重启下集群。然后在执行试试
欢迎加入about云群425860289432264021 ,云计算爱好者群,关注about云腾讯认证空间

32

主题

3

听众

0

收听

中级会员

Rank: 3Rank: 3

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

还是不行……

171

主题

34

听众

36

收听

高级会员

Rank: 4

积分
3970

最佳新人活跃会员热心会员

发表于 2018-3-13 20:11:23 | 显示全部楼层

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

欢迎加入about云群425860289432264021 ,云计算爱好者群,关注about云腾讯认证空间

32

主题

3

听众

0

收听

中级会员

Rank: 3Rank: 3

积分
661
 楼主| 发表于 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