Apache spark 使用两个RDD进行过滤

Apache spark 使用两个RDD进行过滤,apache-spark,pyspark,rdd,Apache Spark,Pyspark,Rdd,我有两个RDD。第一个包含 (pID, Name, Price, Column1) (pID, Seller, Column3) 第二个包含 (pID, Name, Price, Column1) (pID, Seller, Column3) 我想得到第3列,其中pID相同。我仍然希望保持第一个RDD格式。我想不出输出这个的逻辑。我还对函数式编程逻辑感到不安。请帮帮我。哦,我想合并数据集,但没有考虑加入。(我想在从csv加载时必须手动执行)。谢谢这会是一个完美的表现吗?我正在处理一个包含

我有两个RDD。第一个包含

(pID, Name, Price, Column1)
(pID, Seller, Column3)
第二个包含

(pID, Name, Price, Column1)
(pID, Seller, Column3)

我想得到第3列,其中pID相同。我仍然希望保持第一个RDD格式。我想不出输出这个的逻辑。我还对函数式编程逻辑感到不安。请帮帮我。

哦,我想合并数据集,但没有考虑加入。(我想在从csv加载时必须手动执行)。谢谢这会是一个完美的表现吗?我正在处理一个包含近百万条目的大数据集。是否有一种更有效的方法,我可以只选择所选的pID项目。我不这么认为。如果需要额外的时间。尝试转换为dataframe,然后应用连接。似乎还没有解决我的问题。抱歉,我简化了数据集列。真实数据集包含-(pID,column1,column2,column3)B-(pID,columnA,columnB)我希望在维护A数据集架构的同时将columnB(仅匹配pID)添加到A数据集。您可以更新您的问题吗?输入与期望输出
    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))