如果我在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|
+-------+-------+