【发布时间】:2020-05-23 04:58:06
【问题描述】:
我有一个类似的问题: How can I get a distinct RDD of dicts in PySpark?
但是,有一些区别。 我有一个字典,其中键为字符串,列表为值,形状如下:
{"link0":["link1","link2",...]}。
所以在我的每个 RDD 分区中都存储了字典。
collect 函数会返回一个列表:
[{"link0":["link1","link2",...]}, {"link1":["link2","link3",...]}, ...]
假设例如在我存储的 RDD 的第一个分区中:
[{"link0":["link1","link2"]}, {"link1":["link2","link3"]}] 和
在分区二:
[{"link0":["link1","link2"]}, {"link3":["link4","link5"]}]
我真正想做的是在 RDD 上获取所有不同的字典,与上面的问题相同:
[{"link0":["link1","link2"]}, {"link1":["link2","link3"]},
{"link3":["link4","link5"]}]
然而,当谈到价值观列表时,我很难应对。 你有什么建议如何处理吗?
我尝试应用提到的 dict_to_string() 方法,但不确定这是否真的是处理此问题的正确方法。
我还考虑过将数据结构更改为更好的结构。
您有什么想法更适合我的目的吗?
在我得到所有不同的key:[] 对之后,我想获取/过滤掉所有字典中列表中的所有唯一链接,除了那些已经在字典中作为键的链接,然后将它们存储在一个新列表中:
["link2", "link4", "link5"]
如果您有任何想法,我很乐意听到!
感谢您提供建设性帮助。 谢谢。
【问题讨论】:
-
字典是否总是包含一个键和一个列表作为值?
-
是的,确实如此。