scala - Spark:识别 RDD 中每个元素的最佳方法
问题描述
我需要用唯一的 id 标识 RDD 的每个元素,因为我必须为它们中的每一个保存其 k 最近邻居的列表。然后,我想生成这样的输出:
编号 | id_neighbor1 | id_neighbor2 | ... | id_neighbork
为此,我一直在阅读名为.zipWithIndex()
and的转换.zipWithUniqueID()
,但在文档中说:
因此不能保证分配给每个元素的索引,如果重新评估 RDD,甚至可能会改变。
所以,我很确定我不能用它来做我想要的,对吗?因此,另一种应用我自己的 id 的方法是:
myRdd.mapPartitionsWithIndex(
(partID, iterator) => iterator.zipWithIndex.map {
case (labeledPoint, neighID) => (partID + "," + neighID, labeledPoint)
},
preservesPartitioning = true)
有什么建议么?
解决方案
推荐阅读
- ajax - 如何在 AP 模式下使用 ESP8266 一次向多个客户端发送数据
- android - Android 7.1.1(API25)中的基本颤振应用程序屏幕冻结
- android - 使用 Coil Android Kotlin 加载图像
- php - PHP MySQL - 获取一位用户撰写的所有帖子的评论数
- python - 如何为 Django Web App 中的每个用户获取唯一的用户数据
- elasticsearch - 弹性搜索 - 强制结果分布在选定的方面(属性)
- reactjs - React map() 不是函数
- c++ - 在可变参数模板上生成变量列表
- javascript - 实现 Javascript 时遇到问题:不工作
- reactjs - 为什么 JavaScript setDate 不返回日期?