之外,我需要了解的其他转换可能会更改数据框架的分区数量。
我正在查看代码中的一个错误,其中数据框已分为太多的分区,而不是所需的(超过700),当我尝试重新分配它们时,这会导致太多的洗牌操作只有48。我不能在这里使用cocece(),因为我想在重新分配之前首先要有更少的分区。
我正在寻找减少分区数量的方法。假设我有一个Spark DataFrame(带有多列)分为10个分区。我需要根据其中一列进行订购转换。完成此操作后,生成的数据框是否具有相同数量的分区?如果没有,Spark将如何决定分区的数量?
此外,除了repartition()?
需要交换的操作分区数量由spark.sql.shuffle.partitions
定义。如果要特定的值,则应在执行命令之前将其设置:
scala> val df = spark.range(0, 1000)
df: org.apache.spark.sql.Dataset[Long] = [id: bigint]
scala> spark.conf.set("spark.sql.shuffle.partitions", 1)
scala> df.orderBy("id").rdd.getNumPartitions
res1: Int = 1
scala> spark.conf.set("spark.sql.shuffle.partitions", 42)
scala> df.orderBy("id").rdd.getNumPartitions
res3: Int = 42