从IndexedRDD中检索批量密钥的最有效方法是什么?

时间:2015-11-05 11:30:28

标签: apache-spark rdd indexedrdd

我输入的是IndexedRDD:

IndexedRDD<String,HashMap<String,Double>>

拥有约400万个键值对。我想知道从IndexedRDD中检索一批密钥的最有效方法是什么?例如,给定10000个密钥,我想有效地检索10000个键值对,使用索引进行快速检索。

我尝试使用IndexedRDD.MultiGet(键),但发现它一个接一个地获取对,并且需要花费很多时间。

1 个答案:

答案 0 :(得分:1)

查找许多键的一种更有效的方法是创建要查找的键的RDD,然后使用IndexedRDD将其连接起来。这将在每个分区上并行查找。

val keys = sc.parallelize(List("a", "b")).map(k => (k, 0))
val result = indexedrdd.innerJoin(keys) { (id, v, _) => v }
result.collect // => Array(("a", ...), ("b", ...))