단조로 증가하는 64비트 정수 생성 생성된 ID는 단조롭게 증가하고 고유하지만 연속적이지는 않습니다. 현재 구현에서는 파티션 ID를 상위 31비트, 하위 33비트에서 각 파티션 내의 레코드 번호를 배치합니다. 데이터 프레임에는 10억 개 미만의 파티션이 있고 각 파티션에는 80억 개 미만의 레코드가 있다고 가정합니다.
문법
from pyspark.sql import functions as sf
sf.monotonically_increasing_id()
Returns
pyspark.sql.Column: 그룹의 마지막 값입니다.
비고
함수는 결과가 파티션 ID에 따라 달라지므로 비결정적입니다.
예를 들어 각각 레코드가 3개인 두 개의 파티션이 있는 :classDataFrame 를 고려해 보세요. 이 식은 다음 ID를 반환합니다. 0, 1, 2, 8589934592 (1L << 33), 8589934593, 8589934594
예시
예제 1: 일조적으로 증가하는 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|
+---+--------------------+-----------------------------+