我正在使用 Spark Scala 中的 SCDTYPE2,因此我的代码每天都会创建新的数据框,并且我需要知道如何在每天创建数据框时使用新的唯一 ID 进行标记
我已经尝试过monotonically_increasing_id()
创建唯一 ID 的功能。但它在每个数据帧中生成唯一的 id。但它对于每次运行都不是唯一的。每次运行都会重复相同的唯一 ID。
此外,我尝试在我的数据框中使用时间戳列创建唯一 id,monotonically_increasing_id
但它以双精度数据类型提供输出,我已转换回整数/字符串,但它对 id 进行舍入并生成重复的 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")
我希望无论数据帧的生成如何,都应该生成唯一的 id。如果有人能指出我正确的方向,那将很有帮助。