apache-spark - 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 的数据帧后,它将其缓存到内存中。如果它被逐出内存怎么办。未来的行动将尝试再次重新生成数据帧/(一些分区)
谁能帮帮我吗?
解决方案
推荐阅读
- java - 在 java 正则表达式中,将 \ 替换为“如果正斜杠 / 后跟反斜杠 \ 则忽略
- jestjs - LatLngToLayerPoint 转换为像素坐标
- javascript - 捕获网络文件或客户端的网络请求
- android - 如何在 android studio 中设计 whatsapp 聊天气泡?
- javascript - 存在 Cookie 标头,但 Cookie 未存储在浏览器中
- json - 如何使 for 循环在 vue js 中正常工作
- r - 将多个文本文件合并到一个数据框中
- sql - 通过维护一个临时不断更新的表来实时计算从 A 到 B 的汽车的坐标之间的距离
- javascript - HTMLElement.click() 可以限制使用一定的次数吗?
- drake-r-package - R {drake}:如何将 .drake 文件夹从一台计算机克隆到另一台计算机?