Spark:识别RDD中每个元素的最佳方法

时间:2018-08-03 17:01:56

标签: scala apache-spark

我需要用唯一的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)

有什么建议吗?

0 个答案:

没有答案