spark中coalesce、repartition和partitionBy的区别

spark中coalesce、repartition和partitionBy的区别

coalesce

  • false:不产生 shuffle
  • true:产生 shuffle
  • 如果重分区的数量大于原来的分区数量,必须设置为 true,否则分区数不变
  • 增加分区会把原来的分区中的数据随机分配给设置的分区个数
    在这里插入图片描述

repartition

repartition实际上就是coalesce
repartition(int n) = coalesce(int n, true),也就是说,repartition默认就实现了shuffle操作,保证了分区时数据均匀。
在缩小分区的时候可以使用coalesce(int n, false) ,而不是repartition(int n)。这样就避免shuffle过程

partitionBy

partitionBy属于PairRDDFunctions 这里从rdd到PairRDDFunctions发生了隐式转换

  • partitionBy针对的是 键值对类型
  • partitionBy会根据指定的分区规则对数据进行重新分区

版权声明:本文为YYDS_emmm原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。