通过saveAsObject保存RDD,Exception"有一个不可序列化的结果:org.apache.hadoop.hbase.io.ImmutableBytesWritable"

时间:2017-02-23 13:13:40

标签: apache-spark serialization hbase deserialization alluxio

我需要将从HBASE读取的RDD序列化为alluxio内存文件系统,以便定期缓存和更新,以便在增量SPARK计算中使用。

代码是这样的,但遇到标题异常

val inputTableNameEvent = HBaseTables.TABLE_XXX.tableName
val namedeRDDName = "EventAllCached2Update"
val alluxioPath = "alluxio://hadoop1:19998/"
val fileURI = alluxioPath + namedeRDDName
val path:AlluxioURI = new AlluxioURI("/"+namedeRDDName)

val fs:FileSystem = FileSystem.Factory.get()

val conf = HBaseConfiguration.create()
conf.set(TableInputFormat.INPUT_TABLE, inputTableNameEvent)

val rdd = sc.newAPIHadoopRDD(conf, classOf[TableInputFormat],
                classOf[org.apache.hadoop.hbase.io.ImmutableBytesWritable],
                classOf[org.apache.hadoop.hbase.client.Result])
numbers = rdd.count()
println("rdd count: " + numbers)
if( fs.exists(path))
       fs.delete(path)
rdd.saveAsObjectFile(fileURI)

任何人都可以帮忙说明如何将ImmutableBytesWritable映射到另一种类型以绕过此问题吗?此外,地图需要可以恢复,因为稍后我需要使用objectFile读回这个保存的对象并将其转换为[(ImmutableBytesWritable,Result)] RDD,以便稍后用于更新和计算。

0 个答案:

没有答案