Scala 如何加入两个RDD?
我有两个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
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[个人,员工]