sparkonhbase throws error“有一个不可序列化的结果:org.apache.hadoop.hbase.client.result”

dffbzjpn  于 2021-06-08  发布在  Hbase
关注(0)|答案(1)|浏览(399)

它抛出错误时,建立这样的Spark

config("spark.serializer","org.apache.spark.serializer.JavaSerializer")

错误是

ERROR TaskSetManager: Task 0.0 in stage 2.0 (TID 12) had a not serializable result: org.apache.hadoop.hbase.client.Result.Serialization stack:
    - object not serializable (class: org.apache.hadoop.hbase.client.Result

如果我把javaserializer改成kryoserilizer,它就可以工作了。
但在我的应用程序中,它必须使用“javaserilizer”,因为服务。

a64a0gku

a64a0gku1#

不能使用javaserializer序列化hbase结果。您可以使用下面的代码将结果转换为(array[byte],java.util.list[(array[byte],array[byte],array[byte])]。

val it = result.listCells().iterator()
    val list = new util.ArrayList[(Array[Byte], Array[Byte], Array[Byte])]()

    while (it.hasNext) {
      val kv: Cell = it.next()
      list.add((CellUtil.cloneFamily(kv), CellUtil.cloneQualifier(kv), CellUtil.cloneValue(kv)))
    }

    (result.getRow(),list)

相关问题