gpt4 book ai didi

scala - Scala Spark 中的分布式映射

转载 作者:行者123 更新时间:2023-12-03 23:47:46 25 4
gpt4 key购买 nike

Spark 是否支持分布式 Map 集合类型?

因此,如果我有一个 HashMap[String,String] 是键值对,可以将其转换为分布式 Map 集合类型吗?要访问元素,我可以使用“过滤器”,但我怀疑它的性能与 Map 一样好?

最佳答案

由于我发现了一些新信息,我想我会将我的评论变成答案。 @maasg 已经涵盖了标准 lookup function 我想指出你应该小心,因为如果 RDD 的 partitioner 是 None,则查找无论如何都只使用过滤器。引用 spark 上的 (K,V) 存储,它看起来正在进行中,但已经提出了一个可用的拉取请求 here .这是一个示例用法。

import org.apache.spark.rdd.IndexedRDD

// Create an RDD of key-value pairs with Long keys.
val rdd = sc.parallelize((1 to 1000000).map(x => (x.toLong, 0)))
// Construct an IndexedRDD from the pairs, hash-partitioning and indexing
// the entries.
val indexed = IndexedRDD(rdd).cache()

// Perform a point update.
val indexed2 = indexed.put(1234L, 10873).cache()
// Perform a point lookup. Note that the original IndexedRDD remains
// unmodified.
indexed2.get(1234L) // => Some(10873)
indexed.get(1234L) // => Some(0)

// Efficiently join derived IndexedRDD with original.
val indexed3 = indexed.innerJoin(indexed2) { (id, a, b) => b }.filter(_._2 != 0)
indexed3.collect // => Array((1234L, 10873))

// Perform insertions and deletions.
val indexed4 = indexed2.put(-100L, 111).delete(Array(998L, 999L)).cache()
indexed2.get(-100L) // => None
indexed4.get(-100L) // => Some(111)
indexed2.get(999L) // => Some(0)
indexed4.get(999L) // => None

拉取请求似乎很受欢迎,并且可能会包含在 spark 的 future 版本中,因此在您自己的代码中使用该拉取请求可能是安全的。这是 JIRA ticket如果你很好奇

关于scala - Scala Spark 中的分布式映射,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24724786/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com