java.io.NotSerializableException:org.apache.hadoop.hbase.io.ImmutableBytesWritable
错误原因是因为 ImmutableBytesWritable 不能进行序列化(在 Java 中,如果类需要序列化需要实现 Serializable)
而文件在经过网络传输时需要序列化(网络传输是二进制传输)
解决:在官方文档中,提供了两种序列化的方式
Java serialization 和 Kryo serialization
并且推荐使用第二种序列化方式
val sparkConf = new SparkConf()
.setAppName("ReadHBaseTableDataSpark")
.setMaster("local[2]")
//指定序列化格式,默认是java序列化
.set("spark.serializer", "org.apache.spark.serializer.KryoSerializer")
//告知哪些类型需要序列化
.registerKryoClasses(Array(classOf[ImmutableBytesWritable], classOf[Result]))