如何在Spark RDD(Java)中按索引获取元素
我知道方法rdd.firstwfirst(),它为我提供了RDD中的第一个元素。
还有rdd.take(num)方法,它给了我第一个“ num”元素。
但是,是否有可能通过索引获取元素?
谢谢
回答:
首先应为RDD建立索引,这应该是可能的。转换zipWithIndex
提供了稳定的索引,以其原始顺序对每个元素进行编号。
鉴于: rdd = (a,b,c)
val withIndex = rdd.zipWithIndex // ((a,0),(b,1),(c,2))
要按索引查找元素,此形式无用。首先,我们需要使用索引作为键:
val indexKey = withIndex.map{case (k,v) => (v,k)} //((0,a),(1,b),(2,c))
现在,可以使用lookup
PairRDD中的操作按键查找元素:
val b = indexKey.lookup(1) // Array(b)
如果您希望lookup
经常在同一RDD上使用,建议您缓存indexKey
RDD以提高性能。
如何使用Java
API进行此操作是读者的一项练习。
以上是 如何在Spark RDD(Java)中按索引获取元素 的全部内容, 来源链接: utcz.com/qa/430902.html