Aller au contenu principal

monotonically_increasing_id

Génère des entiers de 64 bits strictement croissants. L'ID généré est garanti d'être strictement croissant et unique, mais pas consécutif. L'implémentation actuelle place l'ID de partition dans les 31 bits supérieurs et le numéro d'enregistrement au sein de chaque partition dans les 33 bits inférieurs. L'hypothèse est que le data frame compte moins de 1 milliard de partitions et que chaque partition compte moins de 8 milliards d'enregistrements.

Syntaxe

Python
from pyspark.sql import functions as sf

sf.monotonically_increasing_id()

Renvoie

pyspark.sql.Column: dernière valeur du groupe.

Notes

La fonction est non déterministe car son résultat dépend des ID de partition.

À titre d'exemple, considérons une :class:DataFrame avec deux partitions, chacune avec 3 enregistrements. Cette expression retournerait les IDs suivants : 0, 1, 2, 8589934592 (1L << 33), 8589934593, 8589934594.

Exemples

Exemple 1 : générer des ID à augmentation monotone

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