我输入的是IndexedRDD:
IndexedRDD<String,HashMap<String,Double>>
拥有约400万个键值对。我想知道从IndexedRDD中检索一批密钥的最有效方法是什么?例如,给定10000个密钥,我想有效地检索10000个键值对,使用索引进行快速检索。
我尝试使用IndexedRDD.MultiGet(键),但发现它一个接一个地获取对,并且需要花费很多时间。
答案 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", ...))