coalesce (DataFrame)

Returnerar en ny DataFrame som har exakt numPartitions partitioner.

Syntax

coalesce(numPartitions: int)

Parameters

Parameter Type Beskrivning
numPartitions int ange målantalet partitioner.

Retur

DataFrame

Notes

På samma sätt som när du definierar en RDD resulterar den här åtgärden i ett smalt beroende, t.ex. om du går från 1 000 partitioner till 100 partitioner, kommer det inte att finnas någon blandning, i stället kommer var och en av de 100 nya partitionerna att kräva 10 av de aktuella partitionerna. Om ett större antal partitioner begärs kommer det att ligga kvar på det aktuella antalet partitioner.

Men om du gör en drastisk sammansmältning, t.ex. till numPartitions = 1, kan detta resultera i att din beräkning sker på färre noder än du vill (t.ex. en nod när det gäller numPartitioner = 1). För att undvika detta kan du anropa repartition(). Detta lägger till ett shuffle-steg, men innebär att de aktuella överordnade partitionerna körs parallellt (beroende på vad den aktuella partitioneringen är).

Exempel

from pyspark.sql import functions as sf
spark.range(0, 10, 1, 3).coalesce(1).select(
    sf.spark_partition_id().alias("partition")
).distinct().sort("partition").show()
# +---------+
# |partition|
# +---------+
# |        0|
# +---------+