我有下面的数据集。 Column_1
是逗号分隔的 Column_2
以及 Column_3
用冒号分隔。都是字符串列。每个逗号分隔的值 Column_1
中应该是一个单独的行 Column_1
以及 Column_2
或者 Column_3
应该填充。或者 column_2
或者 column_3
将被填充,而两者不会同时被填充。
如果 Column_1
与中的等效值数不匹配 column_2
或者 column_3
然后我们必须填充null( Column_1
: I,J
以及 K,L
)
Column_1 Column_2 Column_3
A,B,C,D NULL N1:N2:N3:N4
E,F N5:N6 NULL
G NULL N7
H NULL NULL
I,J NULL N8
K,L N9 NULL
我必须将分隔值转换成行,如下所示。
Column_1 Column_2
A N1
B N2
C N3
D N4
E N5
F N6
G N7
H NULL
I N8
J NULL
K N9
L NULL
有没有一种方法可以在javasparkapi中实现这一点,而不必使用udf。
2条答案
按热度按时间z9zf31ra1#
scala解决方案。。。在java中应该是类似的。可以使用
coalesce
,用适当的分隔符拆分,使用arrays_zip
转置,和explode
将结果分成行。6yt4nkrj2#
还有一种方法,使用
transform
可以在元素上迭代的函数column_1
并创建稍后分解的Map: