在一个有两列(my_col和ID)和多条记录的表中,下面是两条示例记录
记录1:第1列-my_col值为:{"XXX": ["123","456"],"YYY": ["246","135"]}
,第2列-ID为A123
记录2:第1列-我的列值为:{"ZZZ":["333"]}
,第2列-ID为B222
需要使用pyspark展平:
你能帮我解决这个问题吗
仅供参考。。。在Hive中实现了以下结果:
select split(element,':')[0] key,
e.value,
id
from
(
SELECT
regexp_replace(e.element,'^\\{|"| *\\[|\\]|\\}$','') element,
t.id
FROM
input_df t
lateral view explode(split(my_col,'(?<=\\]) *, *(?=\\")')) e as element
)s lateral view explode(split(split(element,':')[1],',')) e as value
这里的技巧是将JSON列强制转换为
map
,并分解所有值,直到将其平坦化相关问题 更多 >
编程相关推荐