在我最近的项目中,我需要合并两个不同大小的数据框。例如:
这是我的示例数据:
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(字符串,数组,字符串)相同。
您也可以将第一个数据帧转换为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 |
+-----+----------+-------+
希望这会有所帮助!