联合两种不同类型的数据框架Spark

时间:2018-04-06 03:33:26

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

在我最近的项目中,我需要联合两个不同大小的数据帧。 例如:

以下是我的示例数据:

DF1:

name    number    address
kevin   101        NZ
gevin   102        CA

这里所有字段都是String类型。

DF2:

name    number    address
kevin   [101,102]    NZ
gevin   [102,103]    CA

此处名称和地址是类型字符串,数字是数组类型。

现在我需要联合这两个数据帧。我的预期结果如下:

name    number    address
kevin   101         NZ
gevin   102         CA
kevin   [101,102]   NZ
gevin   [102,103]   CA

最终的df类型应与df2(string,array,string)相同。

先谢谢。

1 个答案:

答案 0 :(得分:1)

您也可以转换为第一个数据帧的arrayunion两个数据帧。

import org.apache.spark.sql.functions._

df1.withColumn("number", array($"number"))
   .union(df2)

输出:

+-----+----------+-------+
|name |number    |address|
+-----+----------+-------+
|kevin|[101]     |NZ     |
|gevin|[102]     |CZ     |
|kevin|[101, 102]|NZ     |
|gevin|[102, 103]|CZ     |
+-----+----------+-------+

希望这有帮助!