更新时间:2024-08-03 GMT+08:00

Spark任务读取HBase报错“had a not serializable result”

问题

Spark任务读取HBase报错,报错信息:Task 0.0 in stage 0.0 (TID 0) had a not serializable result: org.apache.hadoop.hbase.io.ImmutableBytesWritable,应该如何处理?

回答

可通过如下两种方式处理:

  • 在代码的SparkConf初始化之前执行以下两行代码:
    System.setProperty("spark.serializer", "org.apache.spark.serializer.KryoSerializer");
    System.setProperty("spark.kryo.registrator", "com.huawei.bigdata.spark.examples.MyRegistrator");
  • 在SparkConf对象使用set方法设置,代码如下:
    val conf = new SparkConf().setAppName("HbaseTest");
    conf.set("spark.serializer", "org.apache.spark.serializer.KryoSerializer");
    conf.set("spark.kryo.registrator", "com.huawei.bigdata.spark.examples.MyRegistrator");