从本地二进制文件保存和加载 Spark RDD - 最小工作示例

Save and load Spark RDD from local binary file - minimal working example

我正在开发一个 Spark 应用程序,其中首先计算 RDD,然后需要存储到磁盘,然后再次加载到 Spark。为此,我正在寻找一个将 RDD 保存到本地文件然后加载它的最小工作示例。

文件格式不适合文本转换,所以saveAsTextFile不会飞

RDD可以是plain RDD也可以是Pair RDD,并不重要。文件格式可以是HDFS,也可以不是。

示例可以是 Java 或 Scala。

谢谢!

只要 RDD 中的值是可序列化的,您就可以尝试使用 RDD.saveAsObjectFile / SparkContext.objectFile:

case class Foobar(foo: Int, bar: Map[String, Int])
val rdd = sc.parallelize(Seq(
    Foobar(1, Map("foo" -> 0)),
    Foobar(-1, Map("bar" -> 3))
))

rdd.saveAsObjectFile("foobar")
sc.objectFile[Foobar]("foobar")