如何将 dict 类型直接加载到 rdd

Rvs*_*gs 4 python dictionary apache-spark rdd pyspark

我有一个 python 字典

{'609232972': 4, '975151075': 4, '14247572': 4, '2987788788': 4, '3064695250': 2}
Run Code Online (Sandbox Code Playgroud)

如何直接将其加载到rdd中,而不丢失键值对?

当我像这样加载它时

usr_group = sc.parallelize(partition)
print(usr_group.take(5))
Run Code Online (Sandbox Code Playgroud)

我只是分解键值对并给出

['609232972', '975151075', '14247572', '2987788788', '3064695250']
Run Code Online (Sandbox Code Playgroud)

我期待 RDD 闯入

{'609232972': 4, '975151075': 4, '14247572': 4, '2987788788': 4, '3064695250': 2}
Run Code Online (Sandbox Code Playgroud)

这样我就可以一起处理键值对

use*_*574 5

不确定您希望 rdd 作为一行具有什么,但这里有三个选项:

my_dict = {'609232972': 4, '975151075': 4, '14247572': 4, '2987788788': 4, '3064695250': 2}
rdd1 = sc.parallelize([my_dict])
rdd2 = sc.parallelize(list(my_dict.iteritems()))
rdd3 = rdd2.map(lambda x: (dict([x])))
print rdd1.collect()
print rdd2.take(4)
print rdd3.take(4)
Run Code Online (Sandbox Code Playgroud)

[{'2987788788':4,'975151075':4,'3064695250':2,'14247572':4,'609232972':4}]

[('2987788788', 4), ('975151075', 4), ('3064695250', 2), ('14247572', 4)]

[{'2987788788': 4}, {'975151075': 4}, {'3064695250': 2}, {'14247572': 4}]