我有两个 Dataframe
Dataframe1: "a","x" 1 , 2 3 , 4 2 , 5 Dataframe2: "a","y" 1 , 3 3 , 5 7 , 6
我想创建一个新的DataFrame,它类似于
"a", "x" , "y" 1 2 3 3 4 5 2 5 null 7 null 6
我尝试使用joins,但它创建了joined键的两个新列。我应该如何继续?
vlf7wbxs1#
你可以使用join并指定你想要基于(“a”column)进行join的列,Spark会在join后自动删除不必要的列
import org.apache.spark.sql.functions._ import org.apache.spark.sql.SparkSession object test extends App { val spark = SparkSession.builder().master("local[*]").getOrCreate() import spark.implicits._ val df1 = Seq((1, 2), (3, 4), (2, 5)).toDF("a", "x") val df2 = Seq((1, 3), (3, 5), (7, 6)).toDF("a", "y") val resultDF = df1.join(df2, Seq("a"), "outer") resultDF.show() // +---+----+----+ // | a| x| y| // +---+----+----+ // | 1| 2| 3| // | 3| 4| 5| // | 7|null| 6| // | 2| 5|null| // +---+----+----+
这是Join方法的格式
def join(right: Dataset[_], usingColumns: Seq[String], joinType: String): sql.DataFrame
使用给定的列与另一个DataFrame对等连接。与其他join函数不同,join列在输出中只出现一次,即类似于SQL的JOIN USING语法。参数:right -连接操作的右侧。
usingColumns-要连接的列的名称,该列必须两边都存在。
joinType -要执行的联接的类型。
1条答案
按热度按时间vlf7wbxs1#
你可以使用join并指定你想要基于(“a”column)进行join的列,Spark会在join后自动删除不必要的列
这是Join方法的格式
使用给定的列与另一个DataFrame对等连接。
与其他join函数不同,join列在输出中只出现一次,即类似于SQL的JOIN USING语法。
参数:
right -连接操作的右侧。
usingColumns-要连接的列的名称,该列必须两边都存在。
joinType -要执行的联接的类型。