如何连接所有列Scala Spark



如果我在Scala Spark中有两个表,我如何在不显式地将其写出来的情况下连接每个列呢?在这个方法中我需要写出每一列。我想使用Seq方法,因为它删除重复的列。

table("a")
.join(table("b", Seq("col_a","col_b"....)

您可以使用DataFrame.columns来获取所有列,如果它们对于两个表/数据框架都是相同的,那么您可以像下面这样连接它们。如果列名不同,则需要自定义逻辑来构建连接条件。

case class atable(column1:String, column2:String)
val table1 = spark.createDataFrame(Seq(atable(column1 = "a",column2 = "1"),atable(column1 = "b",column2 = "2")))
val table2 = spark.createDataFrame(Seq(atable(column1 = "a",column2 = "1"),atable(column1 = "c",column2 = "3")))
table1.join(table2, table1.columns).show()

,

+-------+-------+
|column1|column2|
+-------+-------+
|      a|      1|
+-------+-------+

最新更新