coalesce (DataFrame)

Devuelve un nuevo DataFrame que tiene exactamente numPartitions particiones.

Sintaxis

coalesce(numPartitions: int)

Parámetros

Parámetro Tipo Descripción
numPartitions int especifique el número de particiones de destino.

Devoluciones

DataFrame

Notas

De forma similar a la fusión definida en un RDD, esta operación da como resultado una dependencia estrecha, por ejemplo, si va de 1000 particiones a 1000 particiones, no habrá un orden aleatorio, en lugar de cada una de las 100 particiones nuevas reclamará 10 de las particiones actuales. Si se solicita un mayor número de particiones, permanecerá en el número actual de particiones.

Sin embargo, si va a realizar una fusión drástica, por ejemplo, a numPartitions = 1, esto puede dar lugar a que el cálculo tenga lugar en menos nodos que le guste (por ejemplo, un nodo en el caso de numPartitions = 1). Para evitar esto, puede llamar a repartition(). Esto agregará un paso aleatorio, pero significa que las particiones ascendentes actuales se ejecutarán en paralelo (según lo que sea que sea la creación de particiones actual).

Ejemplos

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