hive解析json字符串

简单说明下,最近工作中需要把json字符串解析,并把json中数组拆成多行。最开始做这个工作的同事使用自定义udtf函数解析、拆分多行,我接手过来没有继续使用这种方式,使用hive自带函数get_json_objectjson_tuple可以完成解析工作,第二步将解析后的json数组使用lateral view explode实现拆分多行。

1、首先将需要的json数组通过get_json_object(json_str,'key1.key2...')获取我们想要数据和格式,以下为关键代码

-- 使用到四个反斜杠转意是我的代码是通过shell提交的,在测试发现使用两个反斜杠或者不用反斜杠时,regexp_replace会抛出异常,在map阶段就失败,在hue中执行也要使用两个反斜杠(四个也可以)。

regexp_replace(

regexp_extract(

get_json_object(info,'$.data.base_info.employees') -- 获取data数组,格式[{json},{json}]

,'^\\\\[(.+)\\\\]$'

,1

) -- 删除字符串前后的[],格式{json},{json}

,'\\\\}\\\\,\\\\{'

, '\\\\}\\\\|\\\\|\\\\{'

) as employees -- 将josn字符串中的分隔符代换成||,格式{json}||{json}

2、使用explode函数和分割符将字符串拆分成多行json

3、最后使用get_json_object(json,‘$.key’)获取需要的数据

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容