【问题标题】:How to make calculations between RDD rows?如何在 RDD 行之间进行计算?
【发布时间】:2021-02-21 15:29:06
【问题描述】:

我有一个这样的 Spark RDD:

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

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

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

【问题讨论】:

    标签: apache-spark pyspark rdd


    【解决方案1】:

    您可以加入具有相同 RDD 的 RDD,但键移位了 1:

    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)]
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-03-26
      • 1970-01-01
      • 1970-01-01
      • 2021-09-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-11-24
      相关资源
      最近更新 更多