Я использую monotonically_increasing_id(), чтобы присвоить номер строки кадру данных pyspark, используя приведенный ниже синтаксис:
df1 = df1.withColumn("idx", monotonically_increasing_id())
Сейчас в df1 26 572 528 записей. Поэтому я ожидал значения idx от 0 до 26 572 527.
Но когда я выбираю max(idx), его значение странно огромно: 335 008 054 165.
Что происходит с этой функцией? надежно ли использовать эту функцию для слияния с другим набором данных, имеющим такое же количество записей?
У меня есть около 300 кадров данных, которые я хочу объединить в один кадр данных. Таким образом, один кадр данных содержит идентификаторы, а другие содержат разные записи, соответствующие им по строкам.
Решение проблемы
используя функции API, вы можете сделать следующее:
from pyspark.sql.window import Window as W
from pyspark.sql import functions as F
df1 = df1.withColumn("idx", F.monotonically_increasing_id())
windowSpec = W.orderBy("idx")
df1 = df1.withColumn("idx", F.row_number().over(windowSpec)).show()
надеюсь ответ будет полезен
Комментариев нет:
Отправить комментарий