我正在开发一个Spark应用程序,其中首先计算RDD,然后需要存储到磁盘,然后再次加载到Spark。为此,我正在寻找一个将RDD保存到本地文件然后加载它的最小工作示例。
文件格式不适合文字转换,因此saveAsTextFile
不会飞。
RDD可以是普通RDD或配对RDD,但并不重要。文件格式可以是HDFS,也可以不是。
示例可以是Java或Scala。
谢谢!
答案 0 :(得分:2)
只要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")