如何使用重复键在 Pyspark 中 countByValue?
How to countByValue in Pyspark with duplicate key?
我正在尝试获取 RDD 的所有唯一值及其各自的出现次数。我尝试将元素列表转换为 RDD 并尝试获取每个值的出现。
X_RDD = sc.parallelize([1,2,3,4,5,6,7,8,2,4,2,1,1,1,1,1])
Y_MAP = X_RDD.map(lambda m:(m,1))
for i in Y_MAP.countByValue():print(i)
我得到以下输出:
8,1
7,1
6,1
5,1
4,1
3,1
2,1
1,1
我怎样才能得到像下面这样的事件:
1,6
2,3
3,1
4,2
5,1
6,1
7,1
8,1
countByValue(): 它 return 此 RDD 中每个唯一值的计数作为 (value, count) 对的字典并访问此字典,你需要 .items()
。这部分你错过了。
方法 1: 反映您的方法
sorted(sc.parallelize([1,2,3,4,5,6,7,8,2,4,2,1,1,1,1,1]).countByValue().items())
[(1, 6), (2, 3), (3, 1), (4, 2), (5, 1), (6, 1), (7, 1), (8, 1)]
方法二:比较初级
X_RDD = sc.parallelize([1,2,3,4,5,6,7,8,2,4,2,1,1,1,1,1])
Y_MAP = X_RDD.map(lambda m:(m,1))
x = Y_MAP.groupByKey().mapValues(lambda x:list(x))
x.mapValues(lambda x:len(x)).collect()
[(1, 6), (2, 3), (3, 1), (4, 2), (5, 1), (6, 1), (7, 1), (8, 1)]
我正在尝试获取 RDD 的所有唯一值及其各自的出现次数。我尝试将元素列表转换为 RDD 并尝试获取每个值的出现。
X_RDD = sc.parallelize([1,2,3,4,5,6,7,8,2,4,2,1,1,1,1,1])
Y_MAP = X_RDD.map(lambda m:(m,1))
for i in Y_MAP.countByValue():print(i)
我得到以下输出:
8,1
7,1
6,1
5,1
4,1
3,1
2,1
1,1
我怎样才能得到像下面这样的事件:
1,6
2,3
3,1
4,2
5,1
6,1
7,1
8,1
countByValue(): 它 return 此 RDD 中每个唯一值的计数作为 (value, count) 对的字典并访问此字典,你需要 .items()
。这部分你错过了。
方法 1: 反映您的方法
sorted(sc.parallelize([1,2,3,4,5,6,7,8,2,4,2,1,1,1,1,1]).countByValue().items())
[(1, 6), (2, 3), (3, 1), (4, 2), (5, 1), (6, 1), (7, 1), (8, 1)]
方法二:比较初级
X_RDD = sc.parallelize([1,2,3,4,5,6,7,8,2,4,2,1,1,1,1,1])
Y_MAP = X_RDD.map(lambda m:(m,1))
x = Y_MAP.groupByKey().mapValues(lambda x:list(x))
x.mapValues(lambda x:len(x)).collect()
[(1, 6), (2, 3), (3, 1), (4, 2), (5, 1), (6, 1), (7, 1), (8, 1)]