从 IndexedRDD 检索一批键的最有效方法是什么
What's the most efficient way of retrieving a batch of keys from an IndexedRDD
我输入了一个 IndexedRDD:
IndexedRDD<String,HashMap<String,Double>>
大约有 400 万个键值对。我想知道从 IndexedRDD 检索一批键的最有效方法是什么?例如,给定 10000 个键,我想高效地检索 10000 个键值对,使用索引进行快速检索。
我尝试使用 IndexedRDD.MultiGet(keys),但发现它会一个接一个地获取对,并且会花费很多时间。
查找多个键的一种更有效的方法是为要查找的键创建一个 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", ...))
我输入了一个 IndexedRDD:
IndexedRDD<String,HashMap<String,Double>>
大约有 400 万个键值对。我想知道从 IndexedRDD 检索一批键的最有效方法是什么?例如,给定 10000 个键,我想高效地检索 10000 个键值对,使用索引进行快速检索。
我尝试使用 IndexedRDD.MultiGet(keys),但发现它会一个接一个地获取对,并且会花费很多时间。
查找多个键的一种更有效的方法是为要查找的键创建一个 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", ...))