Spark RDD - 避免shuffle - 分区是否有助于处理大文件?

sve*_*sve 5 apache-spark spark-dataframe

我有一个大约10个平面文件的应用程序,每个文件的价值超过200MM +记录.业务逻辑涉及按顺序连接所有这些逻辑.

我的环境:1个主站 - 3个从站(用于测试我为每个节点分配了1GB内存)

大多数代码只针对每个连接执行以下操作

 RDD1 = sc.textFile(file1).mapToPair(..)

 RDD2 = sc.textFile(file2).mapToPair(..) 

 join = RDD1.join(RDD2).map(peopleObject)
Run Code Online (Sandbox Code Playgroud)

任何调整建议,如重新分区,并行化......?如果是这样,有什么最佳做法可以提出重新分配的好数字?

使用当前配置,该作业需要一个多小时,我看到几乎每个文件的shuffle写入> 3GB