簡體   English   中英

使用 PySpark 中的 RDD 計算列表中的值

[英]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)groupByKeymapValues(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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM