Spark中多个RDD的动作/转换

时间:2015-10-01 13:31:26

标签: apache-spark pyspark rdd apache-spark-1.5

我正在编写Spark应用程序(单个客户端)并处理许多我希望运行算法的小文件。每个人都有相同的算法。但是文件无法加载到同一个RDD中以使算法工作,因为它应该在一个文件边界内对数据进行排序 今天我一次处理一个文件,结果我的资源利用率很低(每个动作的数据量很小,很多开销) 有没有办法同时对多个RDD执行相同的操作/转换(并且只使用一个驱动程序)?或者我应该寻找另一个平台?因为这种操作模式对于Spark来说并不经典。

1 个答案:

答案 0 :(得分:1)

如果您使用SparkContext.wholeTextFiles,那么您可以将文件读入一个RDD,并且RDD的每个分区都具有单个文件的内容。然后,您可以使用SparkContext.mapPartitions(sort_file)分别处理每个分区,其中sort_file是要在每个文件上应用的排序函数。这将比当前解决方案更好地使用并发性,只要您的文件足够小以便可以在单个分区中处理它们。