Hive 从一个长的 concat json 字符串中解析 json 元素
Posted
技术标签:
【中文标题】Hive 从一个长的 concat json 字符串中解析 json 元素【英文标题】:Hive parse json elements from a long concat json string 【发布时间】:2020-06-17 11:46:22 【问题描述】:我有一个服务器日志,它连续记录json值,没有任何分隔符,例如:
"a":1"b",2"a":2"c":\"qwe\":\"asd\","d":"ert""e":12....
我想提取每个元素并将它们放入如下行中:
"a":1
"b",2
"a":2
"c":\"qwe\":\"asd\","d":"ert"
"e":12..
日志缺少分隔符并且包含嵌套的json,所以我不能使用
split
函数...如何实现这个...
【问题讨论】:
此字段存储为什么数据类型?这是字符串还是结构体? 嗨~ @EdwardMendez 这是一个字符串字段 【参考方案1】:一种选择是在 字符上使用
split
并使用posexplode
获取元素。仅需要正确连接第一个和最后一个元素的位置。
select case when pos = 0 then concat(split_str,'')
when pos = max(pos) over(partition by str) then concat('',split_str)
else concat('',split_str,'') end as res
from tbl
lateral view posexplode(split(str,'\\\\')) t as pos,split_str
请注意,结果将是 string
。
【讨论】:
以上是关于Hive 从一个长的 concat json 字符串中解析 json 元素的主要内容,如果未能解决你的问题,请参考以下文章