我有一个这种形式的数据框
+--------------------------------------+-----------------------------+
|hashMap |name |
+--------------------------------------+-----------------------------+
|[{"A":"0","B":"0","C":"0"}, {"X":"0"}]|[M, D] |
+--------------------------------------+-----------------------------+
我想拆分成这个
+--------------------------------------+-----------------------------+
|hashMap |name |
+--------------------------------------+-----------------------------+
|"A":"0","B":"0","C":"0" | M |
|"X":"0" | D |
+--------------------------------------+-----------------------------+
我知道爆炸拆分,但我不知道它是否适用于两列。 此外,有时两列中可能只有一个值
例如
+-----------+-----------+
|hashMap |name |
+-----------+-----------+
|[{"A":"0"} |[M] |
+-----------+-----------+
如何使爆炸拆分通用以在 Scala 中处理此问题?
答案 0 :(得分:2)
您可以使用 inline
压缩数组并分解它们:
val df2 = df.selectExpr("inline(arrays_zip(hashMap, name))")