monotonically_increasing_id

Generuje monotonicky rostoucí 64bitová celá čísla. Vygenerované ID je zaručeno monotonicky rostoucí a jedinečné, ale ne po sobě jdoucí. Aktuální implementace umístí ID oddílu do horních 31 bitů a číslo záznamu v každém oddílu v nižších 33 bitech. Předpokladem je, že datový rámec má méně než 1 miliardu oddílů a každý oddíl má méně než 8 miliard záznamů.

Syntaxe

from pyspark.sql import functions as sf

sf.monotonically_increasing_id()

Návraty

pyspark.sql.Column: poslední hodnota skupiny.

Poznámky

Funkce není deterministická, protože její výsledek závisí na ID oddílů.

Představte si například :class:DataFrame se dvěma oddíly, z nichž každý má 3 záznamy. Tento výraz by vrátil následující ID: 0, 1, 2, 8589934592 (1L << 33), 8589934593, 8589934594.

Examples

Příklad 1: Generování monotonicky rostoucích ID

from pyspark.sql import functions as sf
spark.range(0, 10, 1, 2).select(
    "*",
    sf.spark_partition_id(),
    sf.monotonically_increasing_id()).show()
+---+--------------------+-----------------------------+
| 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|
+---+--------------------+-----------------------------+