我的rdd包含这样的键值对:
(key1, 5), (key2, 10), (key3, 20),
我想执行一个Map操作,将每个键与其在整个rdd中的占空比相关联,例如:
(key1, 5/35), (key2, 10/35), (key3, 20/35),
我正在努力找到一个方法来做这件事使用标准函数,任何帮助将不胜感激。
ndh0cuux1#
您可以计算总和并将每个值除以总和:
from operator import add rdd = sc.parallelize([('key1', 5), ('key2', 10), ('key3', 20)]) total = rdd.values().reduce(add) rdd2 = rdd.mapValues(lambda x: x/total) rdd2.collect() # [('key1', 0.14285714285714285), ('key2', 0.2857142857142857), ('key3', 0.5714285714285714)]
在斯卡拉就是这样
val rdd = sc.parallelize(List(("key1", 5), ("key2", 10), ("key3", 20))) val total = rdd.values.reduce(_+_) val rdd2 = rdd.mapValues(1.0*_/total) rdd2.collect // Array[(String, Double)] = Array((key1,0.14285714285714285), (key2,0.2857142857142857), (key3,0.5714285714285714))
1条答案
按热度按时间ndh0cuux1#
您可以计算总和并将每个值除以总和:
在斯卡拉就是这样