【问题标题】:spark key find total elements in all tuples ignoring keys火花键查找所有元组中忽略键的总元素
【发布时间】:2016-02-24 15:53:47
【问题描述】:

我有如下的元组。我想计算元素的总数。我知道 countByKey() 给出每个键的元素数量。我也知道 distinct().countByKey() 按键给出不同的元素。

但我想要回答 5,因为共有 5 个元素。

有没有快速的方法来做同样的事情?

('http://www.google.com/base/feeds/snippets/11448761432933644608', ['spanish', 'vocabulary']), 
('http://www.google.com/base/feeds/snippets/8175198959985911471', ['topics', 'presents', 'museums'])

【问题讨论】:

  • 但是所有记录中的key都不一样
  • 是的。关键是不同的。但我不在乎。我只想要总和

标签: python apache-spark key tuples pyspark


【解决方案1】:

如果您的数据集存储在 RDD 中,那么您只需添加两个步骤,一个转换和一个归约。在下面的代码中,我使用map 将元组转换为整数,然后使用reduction 对所有记录求和。

rdd = sc.parallelize([('http://www.google.com/base/feeds/snippets/11448761432933644608', ['spanish', 'vocabulary']), 
                      ('http://www.google.com/base/feeds/snippets/8175198959985911471', ['topics', 'presents', 'museums'])])
rdd.map(lambda x: len(x[1])).reduce(lambda x, y : x + y)
# returns 5

【讨论】:

  • 您的解决方案有效。是否有可能说出print (rdd.distinct().countByKey()) 失败的原因?
猜你喜欢
  • 1970-01-01
  • 2021-02-05
  • 1970-01-01
  • 1970-01-01
  • 2018-08-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多