Compartilhar via


repartitionByRange

Retorna um novo DataFrame particionado pelas expressões de particionamento fornecidas. O DataFrame resultante é particionado por intervalo.

Sintaxe

repartitionByRange(numPartitions: Union[int, "ColumnOrName"], *cols: "ColumnOrName")

Parâmetros

Parâmetro Tipo Descrição
numPartitions INT pode ser um int para especificar o número de destino de partições ou uma Coluna. Se for uma Coluna, ela será usada como a primeira coluna de particionamento. Se não for especificado, o número padrão de partições será usado.
cols str ou Column colunas de particionamento.

Devoluções

DataFrame: DataFrame repartitioned.

Observações

Pelo menos uma expressão particionada deve ser especificada. Quando nenhuma ordem de classificação explícita é especificada, "nulos crescentes primeiro" são assumidos.

Devido aos motivos de desempenho, esse método usa a amostragem para estimar os intervalos. Portanto, a saída pode não ser consistente, pois a amostragem pode retornar valores diferentes. O tamanho da amostra pode ser controlado pela configuração spark.sql.execution.rangeExchange.sampleSizePerPartition.

Exemplos

from pyspark.sql import functions as sf
spark.createDataFrame(
    [(14, "Tom"), (23, "Alice"), (16, "Bob")], ["age", "name"]
).repartitionByRange(2, "age").select(
    "age", "name", sf.spark_partition_id()
).show()
# +---+-----+--------------------+
# |age| name|SPARK_PARTITION_ID()|
# +---+-----+--------------------+
# | 14|  Tom|                   0|
# | 16|  Bob|                   0|
# | 23|Alice|                   1|
# +---+-----+--------------------+