SparkOnHBase抛出ERROR“有一个不可序列化的结果:org.apache.hadoop.hbase.client.Result”

时间:2018-01-10 09:49:58

标签: apache-spark serialization hbase

当像这样构建火花时抛出错误

df_result = pd.DataFrame({
    'identifier': ['1', '2'], 
    'name': ['Tom', 'Peter'], 
    'registered': [True, True]
})

,错误是

groupby

如果我将JavaSerializer更改为KryoSerilizer,它可以正常工作。

但是在我的应用程序中,由于服务,它必须使用“JavaSerilizer”。

1 个答案:

答案 0 :(得分:1)

您无法使用JavaSerializer序列化HBase Result。您可以使用以下代码将结果转换为(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)