Spark SQL编码器/序列化器

时间:2018-07-03 11:21:42

标签: apache-spark

似乎没有直接的测试案例可以说明如何使用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行表示形式了吗?

0 个答案:

没有答案