我正在编写Spark应用程序(单个客户端)并处理许多我希望运行算法的小文件。每个人都有相同的算法。但是文件无法加载到同一个RDD中以使算法工作,因为它应该在一个文件边界内对数据进行排序 今天我一次处理一个文件,结果我的资源利用率很低(每个动作的数据量很小,很多开销) 有没有办法同时对多个RDD执行相同的操作/转换(并且只使用一个驱动程序)?或者我应该寻找另一个平台?因为这种操作模式对于Spark来说并不经典。
答案 0 :(得分:1)
如果您使用SparkContext.wholeTextFiles
,那么您可以将文件读入一个RDD,并且RDD的每个分区都具有单个文件的内容。然后,您可以使用SparkContext.mapPartitions(sort_file)
分别处理每个分区,其中sort_file
是要在每个文件上应用的排序函数。这将比当前解决方案更好地使用并发性,只要您的文件足够小以便可以在单个分区中处理它们。