【发布时间】:2017-12-22 13:06:34
【问题描述】:
我有两个希望基于两个键加入的数据框。如果没有匹配,我也想只根据key 1引入一个匹配(key 1可能有多个记录,可以选择任何一个,但只能引入一个记录)
像这样:
val df1 = spark.sparkContext.parallelize( List( ("k0","k00","v0"),
("k1","k11","v1"),("k2","k22","v2") )
).toDF("key1","key2","val_type_a")
val df2 = spark.sparkContext.parallelize( List( ("k0","k00","X"),
("k1","XX","Y"),("k1","YY","Z"),("k2","ZZ","W") )
).toDF("key1","key2","val_type_b")
val df1_df2=df1.join(df2,Seq("key1","key2"),"left")
df1.show
df1_df2.show
但是对于 k1 和 k2 行,我希望 val_type_b 也被填充,因为仅基于键 1 的部分匹配可用 - 对于 k1,它可以是 Y 或 Z,而对于 k2,它是 W。 最有效的方法是什么?
【问题讨论】:
标签: apache-spark join dataframe