RDD的Pyspark平均间隔

问题描述 投票:0回答:1

我正在尝试使用PySpark查找相邻元组列表之间的平均差。

例如,如果我有这样的RDD

vals = [(2,110),(2,130),(2,120),(3,200),(3,206),(3,206),(4,150),(4,160),(4,170)]

我想找到每个键的平均差。

例如,键值“ 2”

平均差异为(abs(110-130)+ abs(130-120))/ 2 = 15。

到目前为止,这是我的方法。我正在尝试更改平均计算代码以适应此要求。但这似乎不起作用。

from pyspark import SparkContext
aTuple = (0,0)
interval = vals.aggregateByKey(aTuple, lambda a,b: (abs(a[0] - b),a[1] + 1),
                                       lambda a,b: (a[0] + b[0], a[1] + b[1]))
finalResult = interval.mapValues(lambda v: (v[0]/v[1])).collect()

我想使用RDD函数,不使用Spark SQL或任何其他附加软件包来执行此操作。

什么是最好的方法?

如果有任何疑问,请告诉我。

谢谢您的时间。

python apache-spark pyspark rdd moving-average
1个回答
0
投票

我想出了一个幼稚的方法。我不确定这是否在所有情况下都适用。它像这样。

© www.soinside.com 2019 - 2024. All rights reserved.