Apache spark 使用两个RDD进行过滤
我有两个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加载时必须手动执行)。谢谢这会是一个完美的表现吗?我正在处理一个包含
(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))