Condividi tramite


coalesce (DataFrame)

Restituisce un nuovo dataframe che dispone esattamente numPartitions di partizioni.

Sintassi

coalesce(numPartitions: int)

Parametri

Parametro Tipo Descrizione
numPartitions int specificare il numero di partizioni di destinazione.

Restituzioni

DataFrame

Note

Analogamente all'unione definita in un set di dati RDD, questa operazione comporta una dipendenza stretta, ad esempio se si passa da 1000 partizioni a 100 partizioni, non ci sarà una sequenza casuale, anziché ognuna delle 100 nuove partizioni richiederà 10 delle partizioni correnti. Se viene richiesto un numero maggiore di partizioni, rimarrà al numero corrente di partizioni.

Tuttavia, se si esegue un'unione drastica, ad esempio numPartitions = 1, questo può comportare un calcolo su un numero inferiore di nodi desiderati, ad esempio un nodo nel caso di numPartitions = 1. Per evitare questo problema, è possibile chiamare repartition(). Verrà aggiunto un passaggio casuale, ma significa che le partizioni upstream correnti verranno eseguite in parallelo (in base al partizionamento corrente).

Examples

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|
# +---------+