似乎没有直接的测试案例可以说明如何使用ScalaReflection#serializerFor
我写一个简单的如下:
test("SparkSQLTest") {
val p = Person("tom", 11)
val serializer = ScalaReflection.serializerFor[Person](BoundReference(0, ObjectType(p.getClass), nullable = false))
val row = new GenericInternalRow(1)
row(0) = p
val x = serializer.eval(row)
val y = x.asInstanceOf[GenericInternalRow]
println(y.getString(0))
println(y.getInt(1))
}
我不确定我是否真的测试过ScalaReflection.serializerFor
是如何工作或使用的。
从测试代码看来,序列化程序已将只有一个Person对象字段的行序列化为具有两个字段的另一行,一个是name,另一个是年龄。有了这个观察,我可以说Person对象已经被序列化为Spark sql行表示形式了吗?