【发布时间】:2021-10-08 13:56:33
【问题描述】:
我有一个如下所示格式的数据框
+----+---------+
|col1|col2 |
+----+---------+
|100 |[a, b, c]|
|200 |[b, c, d]|
|300 |[d, e] |
+----+---------+
其中 col1 包含整数,col2 包含字符串数组。我需要将 col2 转换为两列,每列中都有一个字符串,如下所示
要求的格式:
+----+------+------+
|col1|col2_0|col2_1|
+----+------+------+
|100 |a |b |
|100 |a |c |
|100 |b |c |
|200 |b |c |
|200 |b |d |
|200 |c |d |
|300 |d |e |
+----+------+------+
即对于 col2 具有大小为 n 的字符串数组的每一行,将有 nC2 行具有两列 col2_0、col2_1 和 col1 相应地填充在行中。
我的尝试: 我只能将 col2 转换为如下所示的多列,但无法以所需的格式进行。
+----+------+------+------+
|col1|col2_0|col2_1|col2_2|
+----+------+------+------+
|100 |a |b |c |
|200 |b |c |d |
|300 |d |e |null |
+----+------+------+------+
如果没有任何结果,我正在考虑循环遍历数据框并将元素添加到所需格式的 Seq,但我认为这不是一个好方法。
我希望问题足够清楚。请让我知道解决此问题的好方法。谢谢!
【问题讨论】:
标签: scala apache-spark apache-spark-sql