두 개의 키를 기반으로 합치려는 두 개의 데이터 프레임이 있습니다. 일치 항목이없는 경우 키 1만을 기준으로 일치 항목을 가져 오려고합니다 (키 1의 여러 레코드가있을 수 있지만 하나를 선택할 수 있지만 레코드 하나만 가져와야합니다)스파크 2 단계 참여
:
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 원하는 단지 키 하나입니다-사용할 수 K1, 그것은 Y 또는 Z와 k2가 될 수있다 그것은 W입니다. 가장 효율적인 방법은 무엇입니까?