美文网首页
hive解析json字符串

hive解析json字符串

作者: X2X_0de0 | 来源:发表于2020-04-04 11:18 被阅读0次

    简单说明下,最近工作中需要把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’)获取需要的数据

    相关文章

      网友评论

          本文标题:hive解析json字符串

          本文链接:https://www.haomeiwen.com/subject/wtmdphtx.html