【发布时间】:2019-01-10 20:21:32
【问题描述】:
如何扩展数组列,使数组中的每个元素成为数据框中的一列?
数据框包含一个数组列,并且数组的大小不固定。意思是,第一行的数组列可以有 n 个元素,第二行的数组列可以有 m 个元素。
我已经尝试过explode() 函数,但这会将数组拆分为行而不是列。
Input dataframe
+---+------------------------------------------+
|id |arr |
+---+------------------------------------------+
|1 |[{cid = a, pid = 12}, {cid = b, pid = 13}]|
|2 |[{cid = c, pid = 12}] |
+---+------------------------------------------+
Expected dataframe
+---+--------------------------------------------------+
|id |arr_12_cid | arr_12_pid | arr_13_cid | arr_13_pid |
+---+--------------------------------------------------+
|1 |a | 12 | b | 13 |
|2 |c | 12 | null | null |
+---+--------------------------------------------------+
【问题讨论】:
-
在并行模式下可能是不可能的。因为每一行都可以有一些其他行不存在的列,并且您不能在并行情况下更改架构。因此,合理的方法是从头到尾遍历整个行。
-
可以完成,但非常复杂 - 新的一年
标签: scala apache-spark