pyspark Lambda函数对元组值求和

1cklez4t  于 2023-03-28  发布在  Spark
关注(0)|答案(1)|浏览(153)

我有一堆元组,看起来像下面这样(这是filtered,我稍后会提到):

(10, 20)
(20, 40)
(30, 60)

我希望能够对上述元组求和并产生一个值(10 + 20 + 30)/(20 + 40 + 60)= 0.5。我试图在pyspark中编写lambda函数来实现这一点,但我没有正确Map它们。我目前有

totals = filtered.map(x, y: sum(x), sum(y))

但这似乎不太好。我还应该做些什么来完成这件事吗?

zbdgwd5y

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

相关问题