我需要用唯一的ID标识RDD的每个元素,因为我必须为它们中的每个保存k个最近邻居的列表。然后,我想生成这样的输出:
id | id_neighbor1 | id_neighbor2 | ... | id_neighbork
为此,我一直在阅读称为.zipWithIndex()
和.zipWithUniqueID()
的转换,但是在文档中说:
因此不能保证分配给每个元素的索引,并且 如果重新评估RDD,甚至可能会更改。
所以,我很确定我不能将它用于自己想要的东西,对吗?因此,应用我自己的ID的另一种方法是:
myRdd.mapPartitionsWithIndex(
(partID, iterator) => iterator.zipWithIndex.map {
case (labeledPoint, neighID) => (partID + "," + neighID, labeledPoint)
},
preservesPartitioning = true)
有什么建议吗?