【问题标题】:Combine pairRDDs by key按键组合pairRDD
【发布时间】:2022-07-29 12:40:16
【问题描述】:

使用 pyspark 我有网格坐标 (x,y) 和位于每个网格正方形内的各个点,所以我有:

rdd1 = ((x,y), [point1, point2, point3])

我也有一个 rdd 的点被移到该网格中,所以:

rdd2 = ((x, y), [point4, point5, point6])

我想合并这些,这样我就有了:

merged_rdd = ((x,y), [point1, point2, point3], [point4, point5, point6])

【问题讨论】:

    标签: python pyspark rdd


    【解决方案1】:

    我们可以使用join(),然后使用map()来获取所需的格式。

    rdd1 = spark.sparkContext.parallelize([(('x', 'y'), ['point1', 'point2', 'point3'])])
    rdd2 = spark.sparkContext.parallelize([(('x', 'y'), ['point4', 'point5', 'point6'])])
    

    连接将合并('x', 'y') 键上的 2 个 RDD。但是,列表将合并为一个元组。所以,我们可以使用map() 来获取所需格式的数据,即从元组中获取列表。

    rdd1.join(rdd2).collect()
    # [(('x', 'y'), (['point1', 'point2', 'point3'], ['point4', 'point5', 'point6']))]
    
    rdd1.join(rdd2).map(lambda x: (x[0], x[1][0], x[1][1])).collect()
    # [(('x', 'y'), ['point1', 'point2', 'point3'], ['point4', 'point5', 'point6'])]
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-06-24
      • 1970-01-01
      • 2021-07-18
      • 2012-05-27
      • 2017-11-06
      • 2013-02-28
      • 2017-07-27
      • 2016-12-30
      相关资源
      最近更新 更多