spark coalesce

本文深入探讨 Spark 的 coalesce 操作,解释其如何用于优化数据分区,减少 Shuffle 操作,提升大数据处理效率。详细阐述 coalesce 的工作原理,对比与 repartition 的差异,并通过实例展示在不同场景下的最佳实践。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 Cities, if unrestricted, tend to coalesce into bigger and bigger conurbations.
如果不加限制,城市往往会联合发展成越来越大的集合城市。
来自柯林斯例句
3. Gas bubbles coalesce to grow as they rise.
气泡在上升中聚集成长.
来自辞典例句
4. Particles do not coalesce with other particles.
颗粒之间互不聚合.
 coalesce,只能用于减少分区数量,而且可以选择不发生shuffle
 repartiton,可以增加分区,也可以减少分区,必须会发生shuffle,相当于是进行了一次重分区操作
object TypedOperation {

  case class Employee(name: String, age: Long, depId: Long, gender: String, salary: Long)
  def main(args: Array[String]): Unit = {
    println("astron")
    val spark = SparkSession
      .builder()
      .master("local")
      .appName("star")
      .getOrCreate()
    import spark.implicits._
    // DF->DS
    val demoDf = spark.read.json("d://employee.json")
    println(demoDf)
    //demoDf.printSchema()
    val demoDs = demoDf.as[Employee]
    println(demoDf.rdd.partitions.size)
    println(demoDs.rdd.partitions.size)
    //repartion
    val demoDf1 = demoDf.repartition(10)
    val demoDs1 = demoDs.repartition(10)
    println(demoDf1.rdd.partitions.size)
    println(demoDs1.rdd.partitions.size)

    //coalesce 跟预期不一致
    val demoDf2 = demoDf1.coalesce(10)
    val demoDs2 = demoDs1.coalesce(10)
    println(demoDf2.rdd.partitions.size)
    println(demoDs2.rdd.partitions.size)

  }

}
1
1
10
10
1
1
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值