単調に増加するID
単調に増加する 64 ビット整数を生成します。生成された ID は単調に増加し、一意であることが保証されますが、連続的ではありません。現在の実装では、パーティション ID が上位 31 ビットに配置され、各パーティション内のレコード番号が下位 33 ビットに配置されます。データ フレームには 10 億未満のパーティションがあり、各パーティションには 80 億未満のレコードがあるという前提です。
構文
Python
from pyspark.sql import functions as sf
sf.monotonically_increasing_id()
戻り値
pyspark.sql.Column: グループの最後の値。
注意
この関数は、結果がパーティション ID に依存するため、非決定的です。
例として、それぞれ 3 つのレコードを持つ 2 つのパーティションを持つ :class: DataFrameを考えます。この式は次の ID を返します: 0, 1, 2, 8589934592 (1L << 33), 8589934593, 8589934594 。
例
例1 : 単調に増加するIDを生成する
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|
+---+--------------------+-----------------------------+