Как генерировать последовательные уникальные идентификаторы для столбца последовательного фрейма данных, сгенерированного при последовательных прогонах - PullRequest
0 голосов
/ 11 апреля 2019

Я работаю над SCDTYPE2 в Spark Scala, поэтому мой код будет каждый день создавать новый фрейм данных, и мне нужно знать, как проставлять новые уникальные идентификаторы каждый раз, когда я создаю свой фрейм данных каждый день

У меня естьпопробовал monotonically_increasing_id() функцию для создания уникального идентификатора.но генерирует уникальный идентификатор в каждом фрейме данных.но он не уникален для каждого прогона. Он повторяет один и тот же уникальный идентификатор снова для каждого прогона.

Также я попытался создать уникальный идентификатор, используя столбец метки времени в моем фрейме данных вместе с monotonically_increasing_id, но он выдает выходные данные вдвойной тип данных, и я преобразовал обратно в целое число / строку, но его округление идентификатора и создание дубликатов идентификаторов.

 val DF2 =DF1.withColumn("key1",((date_format(col("date_column"), "ddmmyy")*24*60+ date_format(col("date_column"), "HHmmss")*60 + monotonically_increasing_id())*(-1)).cast(IntegerType)).withColumn("key2",$"key1".cast(StringType)).withColumn("date1",(date_format(col("date_column"), "ddmmyy")*24*60)).withColumn("date2",(date_format(col("date_column"), "HHmmss")*60 )).withColumn("id",monotonically_increasing_id()*(-1)).select($"date_column",$"date1",$"date2",$"id",$"key1",$"key2")

Я ожидаю, что уникальный идентификатор должен генерироваться независимо от генерации фрейма данных.Если бы кто-то мог указать мне правильное направление, это было бы полезно.

Ответы [ 2 ]

0 голосов
/ 11 апреля 2019

См. Ответ, который я дал на этот вопрос Как реализовать медленно изменяющиеся размеры (SCD2) Тип 2 в Spark

Это касается всего, и вы также можете увидеть ответ на свой вопрос.

0 голосов
/ 11 апреля 2019

Проверьте модуль uuid: https://docs.python.org/3/library/uuid.html

Вы можете использовать uuid.uuid4() для совершенно случайного идентификатора. Или uuid.uudi1() для более сложного последовательного идентификатора.

...