在Spark中合并两个不同类型的数据框

问题描述 投票:-2回答:1

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

这是我的示例数据:

df1:

name    number    address
kevin   101        NZ
gevin   102        CA

这里所有字段都是字符串类型。

df2:

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

这里的名称和地址是字符串类型,数字是array<string>类型。

现在我需要合并这两个数据框。我被驱逐出的结局是:

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

最终df类型应与df2(字符串,数组,字符串)相同。

arrays apache-spark dataframe apache-spark-sql union
1个回答
1
投票

您也可以将第一个数据帧转换为array,将两个数据帧转换为union

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     |
+-----+----------+-------+

希望这会有所帮助!

© www.soinside.com 2019 - 2024. All rights reserved.