如何在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)]
我有一个这样的 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)]