我有一堆元组,看起来像下面这样(这是filtered,我稍后会提到):
filtered
(10, 20) (20, 40) (30, 60)
我希望能够对上述元组求和并产生一个值(10 + 20 + 30)/(20 + 40 + 60)= 0.5。我试图在pyspark中编写lambda函数来实现这一点,但我没有正确Map它们。我目前有
0.5
totals = filtered.map(x, y: sum(x), sum(y))
但这似乎不太好。我还应该做些什么来完成这件事吗?
zbdgwd5y1#
让我们使用spark的高级API用sum聚合列,然后收集结果并除以计算比率
filtered = sc.parallelize([(10, 20), (30, 40), (50, 60)]) a, b = filtered.toDF(['a', 'b']).agg(F.sum('a'), F.sum('b')).collect()[0]
结果
a, b # (60, 120) a / b # 0.5
1条答案
按热度按时间zbdgwd5y1#
让我们使用spark的高级API用sum聚合列,然后收集结果并除以计算比率
结果