Pular para o conteúdo principal

id_monotonicamente_crescente

Gera números inteiros de 64 bits com incremento monotônico. O ID gerado tem garantia de ser monotonicamente crescente e único, mas não consecutivo. A implementação atual coloca o ID da partição nos 31 bits superiores e o número do registro dentro de cada partição nos 33 bits inferiores. A premissa é que o conjunto de dados tenha menos de 1 bilhão de partições e que cada partição tenha menos de 8 bilhões de registros.

Sintaxe

Python
from pyspark.sql import functions as sf

sf.monotonically_increasing_id()

Devoluções

pyspark.sql.Column: último valor do grupo.

Notas

A função não é determinística porque seu resultado depende dos IDs das partições.

Como exemplo, considere uma :class:DataFrame com duas partições, cada uma com 3 registros. Esta expressão retornaria os seguintes IDs: 0, 1, 2, 8589934592 (1L << 33), 8589934593, 8589934594.

Exemplos

Exemplo 1 : Gerar IDs monotonicamente crescentes

Python
from pyspark.sql import functions as sf
spark.range(0, 10, 1, 2).select(
"*",
sf.spark_partition_id(),
sf.monotonically_increasing_id()).show()
Output
+---+--------------------+-----------------------------+
| id|SPARK_PARTITION_ID()|monotonically_increasing_id()|
+---+--------------------+-----------------------------+
| 0| 0| 0|
| 1| 0| 1|
| 2| 0| 2|
| 3| 0| 3|
| 4| 0| 4|
| 5| 1| 8589934592|
| 6| 1| 8589934593|
| 7| 1| 8589934594|
| 8| 1| 8589934595|
| 9| 1| 8589934596|
+---+--------------------+-----------------------------+