Bagikan melalui


monotonically_increasing_id

Menghasilkan bilangan bulat 64-bit yang meningkat secara monoton. ID yang dihasilkan dijamin akan meningkat secara monoton dan unik, tetapi tidak berurutan. Implementasi saat ini menempatkan ID partisi di 31 bit atas, dan nomor rekaman dalam setiap partisi di 33 bit yang lebih rendah. Asumsinya adalah bahwa bingkai data memiliki kurang dari 1 miliar partisi, dan setiap partisi memiliki kurang dari 8 miliar rekaman.

Syntax

from pyspark.sql import functions as sf

sf.monotonically_increasing_id()

Pengembalian Barang

pyspark.sql.Column: nilai terakhir grup.

Catatan

Fungsi ini tidak deterministik karena hasilnya tergantung pada ID partisi.

Sebagai contoh, pertimbangkan :class:DataFrame dengan dua partisi, masing-masing dengan 3 rekaman. Ekspresi ini akan mengembalikan ID berikut: 0, 1, 2, 8589934592 (1L << 33), 8589934593, 8589934594.

Examples

Contoh 1: Hasilkan ID yang meningkat secara monoton

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