Pular para o conteúdo principal

repartiçãoPorIntervalo

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 número inteiro para especificar o número de partições desejado ou uma coluna. Se for uma coluna, será usada como a primeira coluna de particionamento. Caso não seja especificado, será utilizado o número default de partições.

cols

str ou Coluna

colunas de particionamento.

Devoluções

DataFrame: DataFrame reparticionado.

Notas

Pelo menos uma expressão de particionamento deve ser especificada. Quando nenhuma ordem de classificação explícita é especificada, assume-se "valores nulos em ordem crescente".

Por motivos de desempenho, este método utiliza amostragem para estimar os intervalos. Portanto, o resultado pode não ser consistente, uma vez que a amostragem pode retornar valores diferentes. O tamanho da amostra pode ser controlado pela configuração spark.sql.execution.rangeExchange.sampleSizePerPartition.

Exemplos

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