我已经使用monotonically_increasing_id()
很长时间了,我刚刚发现了一个奇怪的行为,我需要解释一下。
我有一个20000行的df
我添加了一个Id列:
val df2 = df.withColumn("Id", monotonically_increasing_id().cast("int"))
惊讶的是,我没有得到单调递增的Id,我发现5行Id=1, 2行Id=2 ....
所以我认为这可能是因为Spark分发了我的数据框架,以确保我做了以下操作:
val df2 = df.coalesce(1).withColumn("Id", monotonically_increasing_id().cast("int"))
奇怪的行为消失了。
我的想法对吗?monotonically_increasing_id()
不自动管理数据帧重分区吗?
为什么我以前没有遇到过这个行为,我总是使用更大的数据帧,从来没有遇到过这个错误。
感谢这可能与整数溢出有关,因为单调递增_id返回一个长数据类型。