Spark的分区与合并操作通常是一个重要的优化方法,它根据一些经常过滤的列对数据进行分区,控制跨集群数据的物理布局,包括分区方案和分区数。
不管是否有必要,重新分区都会导致数据的全面洗牌。
如果将来的分区数大于当前的分区数,或者当你想要基于某一组特定列来进行分区时,通常只能重新分区。
合并分区:合并操作(coalesce)不会导致数据的全面洗牌,但会尝试合并分区。
示例代码如下:
/**
* 分区与合并
* 另一个重要的优化是根据一些经常过滤的列对数据进行分区,控制跨集群数据的物理布局,包括分区方案和分区数
* 不管是否有必要,重新分区都会导致数据的全面洗牌。
* 如果将来的分区数大于当前的分区数,或者当你想要基于某一组特定列来进行分区时,通常只能重新分区
*
* 合并分区:合并操作(coalesce)不会导致数据的全面洗牌,但会尝试合并分区。
*/
def partition1():Unit = {
val rdd