【发布时间】:2016-02-22 22:10:47
【问题描述】:
我的问题是基于this question 的第一个答案。我想计算键的元素,我该怎么做?
example = sc.parallelize([(alpha, u'D'), (alpha, u'D'), (beta, u'E'), (gamma, u'F')])
abc=example.groupByKey().map(lambda x : (x[0], list(x[1]))).collect()
# Gives [(alpha, [u'D', u'D']), (beta, [u'E']), (gamma, [u'F'])]
我想输出类似下面的东西
alpha:2,beta:1, gamma:1
我知道答案在下面。为什么这么复杂?有更简单的答案吗? s 是否包含键 + 所有值?为什么我不能做 len(s)-1 减去一个来删除键 s[0]
map(lambda s: (s[0], len(list(set(s[1])))))
【问题讨论】:
-
这并不复杂。我们这样做的方式是因为它基于
map-reduce范式,它基于转换和归约。 -
我不能是
alpha:2,beta:1, gamma:2,应该是alpha:2,beta:1, gamma:1
标签: python apache-spark pyspark