如何在每个worker上将大文件写入磁盘

时间:2015-03-05 19:23:01

标签: apache-spark

火花新手。在应用程序运行之前,我有一个需要在每个worker上写入磁盘的大型数据文件。 RDD.mapPartitions看起来就像我应该使用的那样,但我不确定每个worker是否只包含一个分区,以及如何创建一个RDD,保证为每个worker提供一个分区。

1 个答案:

答案 0 :(得分:0)

一些事情:

RDD.saveAsTextFile将从每个工作者写入磁盘,您需要做的就是确保您拥有正确数量的分区(您可能想要将分区数设置为可用于工作者的核心数量在集群中)例如:

val files = sc.textFile("file:...")
val prt = files.repartition(5)
prt.saveAsTextFile("file:...")

另外你应该注意RDD.mapPartition对分区中的所有元素执行map操作,map是一个转换,这意味着它需要转换数据并且是懒惰的。