在我最近的项目中,我需要联合两个不同大小的数据帧。 例如:
以下是我的示例数据:
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)相同。
先谢谢。
答案 0 :(得分: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 |
+-----+----------+-------+
希望这有帮助!