如何在spark中结合两个不同的数据框?

时间:2018-03-24 04:49:52

标签: apache-spark dataframe apache-spark-sql

我希望加入两个数据框。第一个,包含一堆商店,由其ID表示,并保存有关它们的信息,例如销售数量(weekly_sales)和表示该周的日期。

enter image description here

第二个,包含一些商店的额外数据,其中包括一周内的某些商店,例如当周的燃油价格。

enter image description here

我需要创建一个将两者结合起来的数据框。因此,对于同样位于第二个数据集的第一个数据集中的每个商店ID和日期组合,我将具有以下内容,即第一个数据集以及第二个数据集中的温度和燃料价格添加到正确的行来自第一个数据集:

enter image description here

由于第三个条目的第一个和第二个数据集之间没有共享商店ID和日期组合,我只能将新列设为NA。

我如何在火花中做到这一点?我知道如何做的唯一工会只是基于相同数据集的基本连接。

文字中的数据集:

Store   Dept    Date    Weekly_Sales    IsHoliday
1       1   05/02/2010   24924.5        FALSE
1       1   12/02/2010   46039.49       TRUE
1       1   19/02/2010   41595.55       FALSE
1       1   26/02/2010   19403.54       FALSE
1       1   05/03/2010   21827.9        FALSE


Store   Date    Temperature Fuel_Price
1     05/02/2010    42.31     2.572
1     12/02/2010    38.51     2.548
1     19/02/2010    39.93     2.514
1     26/02/2010    46.63     2.561
1     05/03/2010    46.5      2.625
1     12/03/2010    57.79     2.667

Store   Dept    Date    Weekly_Sales    IsHoliday   Temparat Fuel_Price
1       1     05/02/2010    24924.5      FALSE      42.31      2.572
1       1     12/02/2010    46039.49     TRUE       38.51      2.548
1       1     06/02/2010    41595.55     FALSE      NA         NA
1       1     26/02/2010    19403.54     FALSE      
1       1     05/03/2010    21827.9      FALSE      
1       1     12/03/2010    21043.39     FALSE

1 个答案:

答案 0 :(得分:1)

为此,您只需使用joinStore字段执行date

df1.join(df2, Seq("Store", "date"), "left")

这应该为您提供所需的输出。