gpt4 book ai didi

python - 在 pyspark 中创建一个大字典

转载 作者:太空狗 更新时间:2023-10-29 18:08:13 24 4
gpt4 key购买 nike

我正在尝试使用 pyspark 解决以下问题。我在 hdfs 上有一个格式为查找表转储的文件。

key1, value1
key2, value2
...

我想将其加载到 pyspark 中的 python 字典中并将其用于其他目的。所以我尝试这样做:

table = {}
def populateDict(line):
(k,v) = line.split(",", 1)
table[k] = v

kvfile = sc.textFile("pathtofile")
kvfile.foreach(populateDict)

我发现表变量没有被修改。那么,有没有办法在 spark 中创建一个大的内存哈希表?

最佳答案

foreach 是一种分布式计算,因此您不能期望它修改仅在驱动程序中可见的数据结构。你想要的是。

kv.map(line => { line.split(" ") match { 
case Array(k,v) => (k,v)
case _ => ("","")
}.collectAsMap()

这是在 scala 中,但你明白了,重要的函数是 collectAsMap(),它将映射返回给驱动程序。

如果您的数据非常大,您可以使用 PairRDD 作为 map 。首先映射到对

    kv.map(line => { line.split(" ") match { 
case Array(k,v) => (k,v)
case _ => ("","")
}

然后您可以使用 rdd.lookup("key") 访问,它返回与键关联的值序列,尽管这肯定不会像其他分布式 KV 存储那样高效,如 spark并不是真正为此而构建的。

关于python - 在 pyspark 中创建一个大字典,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24513440/

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