【问题标题】:Filtering using Two RDD使用两个 RDD 进行过滤
【发布时间】:2018-08-17 06:39:37
【问题描述】:

我有两个 RDD。第一个包含

(pID, Name, Price, Column1)

第二个包含

(pID, Seller, Column3)

我想获取 pID 相同的第 3 列。我仍然想保持第一个 RDD 格式。我想不出输出这个的逻辑。我也对函数式编程逻辑感到不安。请帮帮我。

【问题讨论】:

    标签: apache-spark pyspark rdd


    【解决方案1】:
        val as = List((101, ("iteam A", 1.24)),
          (102, ("iteam B", 2.45)),
          (103, ("iteam C", 3.54)))
        val rdd1 = sc.parallelize(as) // Pair Rdd with key = pId, value = (name, price)
    
        val ls = List((101, "Seller A"),
          (101, "Seller B"),
          (102, "Seller C"),
          (102, "Seller D"),
          (103, "Seller E"))
        val rdd2 = sc.parallelize(ls) // Pair Rdd with key = pId, value = (seller)
    
        //call inner join:
         val innerJoinedRdd = rdd1.join(rdd2)
         innerJoinedRdd.collect().foreach(println)
    
        (101,((iteam A,1.24),Seller A))
        (101,((iteam A,1.24),Seller B))
        (102,((iteam B,2.45),Seller C))
        (102,((iteam B,2.45),Seller D))
        (103,((iteam C,3.54),Seller E))
    

    【讨论】:

    • 哦,我想过合并数据集,但没有考虑加入。 (以为我从 csv 加载时必须手动完成)。谢谢!
    • 这会是性能详尽的吗?我正在处理一个包含近一百万个条目的大型数据集。有没有一种有效的方法可以让我只选择选定的 pID 项目。
    • 我不这么认为。如果需要额外的时间。尝试转换为数据框,然后应用连接。
    • 似乎还没有解决我的问题。抱歉,我简化了我的数据集列。真实数据集包含 A - (pID, column1, column2, column3) B - (pID, columnA, columnB) 我希望将 columnB(仅匹配 pID)添加到 A 数据集,同时保持 A 数据集架构。
    • 你能更新你的问题吗?输入和欲望输出
    猜你喜欢
    • 2015-06-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-01-23
    • 1970-01-01
    相关资源
    最近更新 更多