在spark中连接两个Dataframe

um6iljoc  于 2021-07-12  发布在  Spark
关注(0)|答案(1)|浏览(432)

我有一个用例,在这个用例中我需要以查找的方式连接两个表。我怎样才能做到这一点是Spark?
表a:
键类型1type2type3alk1nak1nak2nak3alk2nak4nak5nak6
表b:
密钥数据alk1alk2g2nak1g3nak2g4nak3g5nak4g6nak5g7nak6g8
结果:
键数据alk1g1、g3、g4、g5alk2g2、g6、g7、g8

1tuwyuhd

1tuwyuhd1#

你可以使用 array_contains 然后goupby和collect列的列表 data :

val result = dfA.as("a")
  .withColumn("keys", array(dfA.columns.map(col): _*))
  .join(
    dfB.as("b"),
    array_contains(col("keys"), col("b.Key"))
  ).groupBy("a.Key")
  .agg(
    concat_ws(",", collect_list(col("data"))).as("data")
  )

result.show
//+----+-----------+
//| Key|       data|
//+----+-----------+
//|ALK1|G1,G3,G4,G5|
//|ALK2|G2,G6,G7,G8|
//+----+-----------+

相关问题