5.2.5 对象文件
对象文件看起来就像是对 SequenceFile 的简单封装,它允许存储只包含值的 RDD。
和 SequenceFile 不一样的是,对象文件是使用 Java 序列化写出的。
- 如果你修改了你的类——比如增减了几个字段——已经生成的对象文件就不再可读了。
- 和普通的 SequenceFile 不同,对于同样的对象,对象文件的输出和 Hadoop 的输出不一样。
- 与其他文件格式不同的是,对象文件通常用于 Spark 作业间的通信。
- Java 序列化有可能相当慢。
- 对象文件在 Python 中无法使用,不过 Python 中的 RDD 和 SparkContext 支持 saveAsPickleFile() 和 pickleFile() 方法作为替代。
这使用了 Python 的 pickle 序列化库。
使用对象文件的主要原因是它们可以用来保存几乎任意对象而不需要额外的工作。
读写
要保存对象文件,只需在 RDD 上调用 saveAsObjectFile 就行了。
读回对象文件也相当简单:用 SparkContext 中的 objectFile() 函数接收一个路径,返回对应的 RDD。