当我使用saveAsTextFile
时,
rdd1.saveAsTextFile("../savefile")
rdd2.saveAsTextFile("../savefile")
我无法将两个不同的RDD放入单个文本文件中。我有办法吗?
此外,有没有办法可以将一些格式应用到文本文件的文本中?例如,添加\n
或其他格式。
答案 0 :(得分:1)
单文本文件在Spark中相当模糊。每个分区都单独保存,这意味着每个分区可以获得一个文件。如果你想要一个单独的RDD,你必须将你的数据移动到一个分区或收集,大多数时候它要么昂贵,要么根本不可行。
您可以使用-
方法(或评论中lpiepiora提到的=
)获取RDD联盟,但仅当两个RDD相同时才有效类型:
union
如果类型不同,整个想法都会有点腥味。
If you want a specific format您必须在致电++
之前应用它。每个元素val rdd1 = sc.parallelize(1 to 5)
val rdd2 = sc.parallelize(Seq("a", "b", "c", "d", "e"))
rdd1.union(rdd2)
// <console>:26: error: type mismatch;
// found : org.apache.spark.rdd.RDD[String]
// required: org.apache.spark.rdd.RDD[Int]
// rdd1.union(rdd2)
只需calls toString
。
将以上所有内容放在一起:
saveAsTextFile