Scala 如何加入两个RDD?

Scala 如何加入两个RDD?,scala,apache-spark,Scala,Apache Spark,我有两个RDD,如下所示 case class Person (name,age,phno,email) case class Employee (empid,name,age,phone,email) rdd1[个人]和rdd2[员工] 我想加入这两个基于电话和电子邮件的rdd,需要 RDD[Person,Employee] 有人能建议怎么做吗?创建两个数据帧。 假设您已从case类对rdd施加模式: df1 = rdd1.toDF.withColumn("Primary_key_1",c

我有两个RDD,如下所示

case class Person (name,age,phno,email)
case class Employee (empid,name,age,phone,email)
rdd1[个人]
rdd2[员工]

我想加入这两个基于电话和电子邮件的rdd,需要

RDD[Person,Employee]
有人能建议怎么做吗?

创建两个数据帧。 假设您已从case类对rdd施加模式:

df1 = rdd1.toDF.withColumn("Primary_key_1",concat($"phno",lit("_"),$"email"))

df2 = dd2.df.withColumn("Primary_key_2",concat($"phno",lit("_"),$"email")).drop("phno","email")

rdd = df1.join(df2,$"Primary_key_1"===$"Primary_key_2","left_outer").drop("Primary_key_2","Primary_key_1").rdd

在一个唯一的键(可能是电子邮件?)上连接两个RDD
rdd1.map(x=>((x.phno,x.email),x))。连接(rdd2.map(x=>((x.phone,x.email),x))
将在
电话
电子邮件
上连接两个RDD。您可以在此之后应用
map
,以获取
RDD[个人,员工]