有没有可能在spark中将多个列分解成一个新列?我有一个Dataframe,看起来像这样:
userId varA varB
1 [0,2,5] [1,2,9]
期望输出:
userId bothVars
1 0
1 2
1 5
1 1
1 2
1 9
到目前为止,我尝试了:
val explodedDf = df.withColumn("bothVars", explode($"varA")).drop("varA")
.withColumn("bothVars", explode($"varB")).drop("varB")
这是行不通的。如有任何建议,我们将不胜感激。
2条答案
按热度按时间noj0wjuj1#
你可以把两个数组 Package 成一个数组
flatten
在分解嵌套数组之前,先将其分解,如下所示:请注意
flatten
spark提供2.4
+.gmxoilav2#
使用
array_union
然后使用explode
功能。