【发布时间】:2021-02-13 20:38:31
【问题描述】:
我是 PySpark 的初学者。
我想找到值中具有相同数字的字母对,然后找出哪对字母出现的频率更高。
这是我的数据
data = sc.parallelize([('a', 1), ('b', 4), ('c', 10), ('d', 4), ('e', 4), ('f', 1), ('b', 5), ('d', 5)])
data.collect()
[('a', 1), ('b', 4), ('c', 10), ('d', 4), ('e', 4), ('f', 1), ('b', 5), ('d', 5)]
我想要的结果是这样的:
1: a,f
4: b, d
4: b, e
4: d, e
10: c
5: b, d
我尝试了以下方法:
data1= data.map(lambda y: (y[1], y[0]))
data1.collect()
[(1, 'a'), (4, 'b'), (10, 'c'), (4, 'd'), (4, 'e'), (1, 'f'), ('b', 5), ('d', 5)]
data1.groupByKey().mapValues(list).collect()
[(10, ['c']), (4, ['b', 'd', 'e']), (1, ['a', 'f']), (5, ['b', 'd'])]
正如我所说,我对 PySpark 非常陌生,并试图搜索该命令但没有成功。谁能帮我解决这个问题?
【问题讨论】:
标签: apache-spark pyspark rdd key-value