4

我知道 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 编写的文本文件反序列化为它们最初所在的对象?

4

0 回答 0