HIVE常用函数的用法之JSON解析上

HIVE常用函数的用法之JSON解析

命令格式:
1.GET_JSON_OBJECT(STRING json,STRING path)
命令说明:
用于在一个标准JSON字符串中,按照path抽取指定的字符串。每次调用该函数时,都会读一次原始数据,因此反复调用可能浪费性能和费用。您可以通过GET_JSON_OBJECT,结合UDTF,轻松转换JSON格式日志数据,避免多次调用函数
JSON:STRING类型,标准的JSON格式字符串。
path:STRING类型,表示在JSON中的path,以$开头。path详情请参见LanguageManual UDF。
: 表 示 根 节 点 。 . : 表 示 子 节 点 。 [ ] : [ n u m b e r ] 表 示 数 组 下 标 , 数 组 格 式 为 k e y [ s u b 1 ] [ s u b 2 ] [ s u b 3 ] … … 。 ∗ : W i l d c a r d f o r [ ] , 返 回 整 个 数 组 。 ∗ 不 支 持 转 义 。 特 别 说 明 : 如 果 J S O N 为 空 或 非 法 的 J S O N 格 式 , 则 返 回 N U L L 。 如 果 J S O N 合 法 , p a t h 也 存 在 , 则 返 回 对 应 字 符 串 。 不 支 持 一 个 O b j e c t 中 出 现 相 同 的 K e y , 例 如 a : 1 , a : 0 , 可 能 导 致 无 法 解 析 。 不 支 持 E m o j i 表 情 字 符 串 。 例 : + − − − − + j s o n + − − − − + " s t o r e " : " f r u i t " : [ " w e i g h t " : 8 , " t y p e " : " a p p l e " , " w e i g h t " : 9 , " t y p e " : " p e a r " ] , " b i c y c l e " : " p r i c e " : 19.95 , " c o l o r " : " r e d " , " e m a i l " : " a m y @ o n l y f o r j s o n u d f t e s t . n e t " , " o w n e r " : " a m y " h i v e > S E L E C T G E T J S O N O B J E C T ( s r c j s o n . j s o n , ′ :表示根节点。 .:表示子节点。 []:[number]表示数组下标,数组格式为key[sub1][sub2][sub3]……。 *:Wildcard for [],返回整个数组。*不支持转义。 特别说明:如果JSON为空或非法的JSON格式,则返回NULL。 如果JSON合法,path也存在,则返回对应字符串。 不支持一个Object中出现相同的Key,例如{a:1, a:0},可能导致无法解析。 不支持Emoji表情字符串。 例: +----+ json +----+ {"store": {"fruit":[{"weight":8,"type":"apple"},{"weight":9,"type":"pear"}], "bicycle":{"price":19.95,"color":"red"} }, "email":"amy@only_for_json_udf_test.net", "owner":"amy" } hive> SELECT GET_JSON_OBJECT(src_json.json, ' .[][number]key[sub1][sub2][sub3]Wildcardfor[]JSONJSONNULLJSONpathObjectKeya:1,a:0Emoji++json++"store":"fruit":["weight":8,"type":"apple","weight":9,"type":"pear"],"bicycle":"price":19.95,"color":"red","email":"amy@onlyforjsonudftest.net","owner":"amy"hive>SELECTGETJSONOBJECT(srcjson.json,.owner’) FROM src_json;
amy
hive> SELECT GET_JSON_OBJECT(src_json.json, ‘KaTeX parse error: Undefined control sequence: \[ at position 13: .store.fruit\̲[̲0]') FROM src_j….non_exist_key’) FROM src_json;
NULL
数组情况:
GET_JSON_OBJECT(’{“array”:[[“aaaa”,1111],[“bbbb”,2222],[“cccc”,3333]]}’,’ . a r r a y [ 1 ] [ 1 ] ′ ) = " 2222 " G E T J S O N O B J E C T ( ′ " a a a " : " b b b " , " c c c " : " d d d " : " e e e " , " f f f " : " g g g " , " h h h " : [ " h 0 " , " h 1 " , " h 2 " ] , " i i i " : " j j j " ′ , ′ .array[1][1]')= "2222" GET_JSON_OBJECT('{"aaa":"bbb","ccc":{"ddd":"eee","fff":"ggg","hhh":["h0","h1","h2"]},"iii":"jjj"}',' .array[1][1])="2222"GETJSONOBJECT("aaa":"bbb","ccc":"ddd":"eee","fff":"ggg","hhh":["h0","h1","h2"],"iii":"jjj",.ccc.hhh[*]’) = “[“h0”,“h1”,“h2”]”
GET_JSON_OBJECT(’{“aaa”:“bbb”,“ccc”:{“ddd”:“eee”,“fff”:“ggg”,“hhh”:[“h0”,“h1”,“h2”]},“iii”:“jjj”}’,’$.ccc.hhh[1]’) = “h1”

2.JSON_TUPLE(STRING json,STRING key1,STRING key2,…)
命令说明:
该函数用于一个标准的JSON字符串中,按照输入的一组键(key1,key2,…)JSON抽取各个键指定的字符串。
参数说明:
JSON:STRING类型,标准的JSON格式字符串。
key:STRING类型,用于描述在JSON中的path,一次可输入多个,不能以美元符号($)开头。关于数据例子的更新下篇文章更新

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值