如何在RDD行之间进行计算?

How to make calculations between RDD rows?

我有一个这样的 Spark RDD:

[(1, '02-01-1950', 2.8), (2, '03-01-1950', 3.1), (3, '04-01-1950', 3.2)]

我想计算连续行之间的增加(按百分比)。例如,从第1行到第2行,价值的增加是110.7%((3.1/2.8)*100),以此类推

关于如何在行之间进行计算有什么建议吗?

您可以将键移位 1 的同一个 RDD 加入 RDD:

rdd = sc.parallelize([(1, '02-01-1950', 2.8), (2, '03-01-1950', 3.1), (3, '04-01-1950', 3.2)])

rdd2 = rdd.map(lambda x: (x[0], x[2]))
rdd3 = rdd.map(lambda x: (x[0]+1, x[2]))

rdd4 = rdd2.join(rdd3).mapValues(lambda r: r[0]/r[1]*100)

rdd4.collect()
# [(2, 110.71428571428572), (3, 103.2258064516129)]