合并具有少量不同列的两个数据框

您所在的位置:网站首页 awk合并列 合并具有少量不同列的两个数据框

合并具有少量不同列的两个数据框

#合并具有少量不同列的两个数据框| 来源: 网络整理| 查看: 265

我想合并几个具有很少不同列的DataFrame.假设,

DataFrame A有3列:Column_1,Column_2,Column 3

DataFrame B有3列:Column_1,Columns_2,Column_4

DataFrame C有3列:Column_1,Column_2,Column_5

我想合并这些DataFrame,以便我得到一个DataFrame:

Column_1,Column_2,Column_3,Column_4 Column_5

DataFrame的数量可能会增加.有没有办法让这次合并?这样,对于特定的Column_1 Column_2组合,我得到同一行中其他三列的值,如果对于Column_1 Column_2的特定组合,某些列中没有数据则应该在那里显示null.

DataFrame A:

Column_1 Column_2 Column_3 1 x abc 2 y def

DataFrame B:

Column_1 Column_2 Column_4 1 x xyz 2 y www 3 z sdf

A和B的合并:

Column_1 Column_2 Column_3 Column_4 1 x abc xyz 2 y def www 3 z null sdf

eliasah.. 6

如果我正确理解您的问题,您将需要使用一系列列作为键来执行外连接.

我使用了您问题中提供的数据来说明如何使用示例完成:

scala> val df1 = Seq((1,"x","abc"),(2,"y","def")).toDF("Column_1","Column_2","Column_3") // df1: org.apache.spark.sql.DataFrame = [Column_1: int, Column_2: string, Column_3: string] scala> val df2 = Seq((1,"x","xyz"),(2,"y","www"),(3,"z","sdf")).toDF("Column_1","Column_2","Column_4") // df2: org.apache.spark.sql.DataFrame = [Column_1: int, Column_2: string, Column_4: string] scala> val df3 = df1.join(df2, Seq("Column_1","Column_2"), "outer") // df3: org.apache.spark.sql.DataFrame = [Column_1: int, Column_2: string, Column_3: string, Column_4: string] scala> df3.show // +--------+--------+--------+--------+ // |Column_1|Column_2|Column_3|Column_4| // +--------+--------+--------+--------+ // | 1| x| abc| xyz| // | 2| y| def| www| // | 3| z| null| sdf| // +--------+--------+--------+--------+

使用给定的列称为equi-join另一个DataFrame.

它与其他连接函数不同,连接列只在输出中出现一次,即类似于SQL的JOIN USING语法.

注意

从Spark 1.6开始,外部均衡连接可用.

1> eliasah..:

如果我正确理解您的问题,您将需要使用一系列列作为键来执行外连接.

我使用了您问题中提供的数据来说明如何使用示例完成:

scala> val df1 = Seq((1,"x","abc"),(2,"y","def")).toDF("Column_1","Column_2","Column_3") // df1: org.apache.spark.sql.DataFrame = [Column_1: int, Column_2: string, Column_3: string] scala> val df2 = Seq((1,"x","xyz"),(2,"y","www"),(3,"z","sdf")).toDF("Column_1","Column_2","Column_4") // df2: org.apache.spark.sql.DataFrame = [Column_1: int, Column_2: string, Column_4: string] scala> val df3 = df1.join(df2, Seq("Column_1","Column_2"), "outer") // df3: org.apache.spark.sql.DataFrame = [Column_1: int, Column_2: string, Column_3: string, Column_4: string] scala> df3.show // +--------+--------+--------+--------+ // |Column_1|Column_2|Column_3|Column_4| // +--------+--------+--------+--------+ // | 1| x| abc| xyz| // | 2| y| def| www| // | 3| z| null| sdf| // +--------+--------+--------+--------+

使用给定的列称为equi-join另一个DataFrame.

它与其他连接函数不同,连接列只在输出中出现一次,即类似于SQL的JOIN USING语法.

注意

从Spark 1.6开始,外部均衡连接可用.



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3