[英]count values in a list using RDDs in PySpark
我陷入了查找每個城市的每個工資計數的問題,我只使用 RDD 來解決問題,這意味着沒有使用 DF,也沒有任何庫中的函數。
我的代碼是data= cities.map(lambda x: ((x.split()[0], int(x.split()[1])))).groupByKey().mapValues(list)
此代碼的 output 是('cityX',[54,40,43,54,43,55])
我想找到 cityX 的每個薪水的計數,然后取這個城市的最大計數。
我正在使用 PySpark python shell。
所需的 output 是('cityX',[(54,1),(40,1),(43,1),(54,1),(43,1),(55,1)])
我可以使用什么操作給每個薪水編號 1,然后通過保持密鑰原樣計算每個薪水的 1?
您可以使用map
將 1 添加到每個 RDD 元素作為新元組(RDDElement, 1)
和groupByKey
和mapValues(len)
來計算每個城市/工資對。 例如:
salaries = sc.parallelize([("city1",100000),("city2", 85000),("city1",155000),("city2",180000),("city2",180000)])
salaries.map(lambda x: (x, 1)).groupByKey().mapValues(len).collect()
結果是:
[(('city2', 85000), 1),
(('city2', 180000), 2),
(('city1', 100000), 1),
(('city1', 155000), 1)]
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.