分享

spark读取hbase数据时提示“ERROR “had a not serializable result: org.apache.h...

漠小帆 发表于 2018-1-12 00:01:17 [显示全部楼层] 回帖奖励 阅读模式 关闭右栏 5 4454
问题描述:创建 spark时设置config("spark.serializer","org.apache.spark.serializer.JavaSerializer"),spark读取hbase没有任何问题。由于业务问题,必须设置为JavaSerilizer,这时候就会提示ERROR “had a not serializable result: org.apache.hbase.client.Result"
望大神指教
代码大致如下
val hbaseConf = connection.getConfiguration
hbaseConf.set(TableInputFormat.INPUT_TABLE, tableName)
sc.newAPIHadoopRDD(hbaseConf, classOf[TableInputFormat],
  classOf[org.apache.hadoop.hbase.io.ImmutableBytesWritable],
  classOf[org.apache.hadoop.hbase.client.Result]).map{case (_,result) =>{val objectkey = Bytes.toString(result.getValue("objects".getBytes, "object_key".getBytes))
***}}


补充内容 (2018-1-12 15:13):
不好意思
使用KryoSerilizer是正常的,但使用JavaSerilizer就提示序列化问题,由于业务场景问题,必须使用JavaSerilizer。

已有(5)人评论

跳转到指定楼层
漠小帆 发表于 2018-1-12 14:11:04
审核还没通过吗
回复

使用道具 举报

nextuser 发表于 2018-1-12 14:34:07

设置为这个值org.apache.spark.serializer.KryoSerializer,看看问题是否是同样的。
回复

使用道具 举报

漠小帆 发表于 2018-1-12 15:14:50
nextuser 发表于 2018-1-12 14:34
设置为这个值org.apache.spark.serializer.KryoSerializer,看看问题是否是同样的。

使用Kryo是正常的,但业务需要,必须使用JavaSerilizer。
回复

使用道具 举报

einhep 发表于 2018-1-12 19:52:47
漠小帆 发表于 2018-1-12 15:14
使用Kryo是正常的,但业务需要,必须使用JavaSerilizer。

可以尝试下面方法:
val javaSerializer = new org.apache.spark.serializer.JavaSerializer(conf)  
    val serialInst = javaSerializer.newInstance()  
serialInst.serialize(objetc)  
object为org.apache.hadoop.hbase.client.Result的对象

回复

使用道具 举报

漠小帆 发表于 2018-1-15 09:00:14
einhep 发表于 2018-1-12 19:52
可以尝试下面方法:
val javaSerializer = new org.apache.spark.serializer.JavaSerializer(conf)  
  ...

好的。我尝试下
回复

使用道具 举报

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

本版积分规则

关闭

推荐上一条 /2 下一条