从本地二进制文件保存和加载 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")
我正在开发一个 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")