首页 > 解决方案 > monotonically_increasing_id 正在为 spark 2.3.1 中的同一记录生成 2 个不同的唯一 ID?

问题描述

我正在使用 monotonically_increasing_id 在我的数据框中创建一个列,经过 2-3 次转换,因为很少有记录 ID 被更改。例如

val newDf = df.withColumn("rowId", monotonically_increasing_id()) 
newDf.show()

+---------+--------------------+-------+
| userId  | area    |  flag |rowId|
+---------+--------------------+-------+
|123      |[Blah1...|   true|    0|
|234      |[Blah2...|   true|    1|
|216      |[Blah3...|   true|    2|
|123      |[blah4...|  false|    3|
|345      |[Blah5...|   true|    4|
|677      |[Blah6...|  false|    5|

在对 newDf 进行了一些改造之后

...//val df1
...//val df2
...//val df3
...//val finalDf 

finalDf.show()

+---------+--------------------+-------+
| userId  | area    |  flag |rowId|
+---------+--------------------+-------+
|123      |[Blah1...|   true|    0|
|234      |[Blah2...|   true|    1|
|216      |[Blah3...|   true|    2|
|123      |[blah4...|  false|    6|
|345      |[Blah5...|   true|    7|
|677      |[Blah6...|  false|    8|

一些rowiD被改变了。

假设在生成具有 monotonically_increasing_id 的数据帧后,它将其缓存到内存中。如果它被逐出内存怎么办。未来的行动将尝试再次重新生成数据帧/(一些分区)

谁能帮帮我吗?

标签: apache-spark

解决方案


推荐阅读