我知道 Scalding 的默认序列化使用 Kryo。所以对于这个例子,假设我有一个学生对象的管道。
case class Student(name:String, id:String)
val pipe: Pipe[Student] = //....
然后我使用 Kryo 将该管道写入 TextDelimited 文件。
pipe.write(args("output"))
现在我有了这些“输出”文件,如何轻松地将它们读回 Student 对象?我的总体想法类似于以下内容,但它不起作用。
Tsv("Kryo output files").read.map {bytes =>
val instantiator = (new ScalaKryoInstantiator).setRegistrationRequired(true)
val kryo = instantiator.newKryo
kryo.register(classOf[Person])
val deserialized = kryo.readObject(new Input(bytes), classOf[Person])
deserialized
}
如何将我的 Kryo 编写的文本文件反序列化为它们最初所在的对象?