zoukankan      html  css  js  c++  java
  • Hive 解析 json,json array

    在大数据处理中经常遇到业务端发送json 数据到 table 里 的情况 ,这个需要数据开发工程师能够准备对json string 进行解析 ,并重新定义新表的结构 。
    在网络上看到很多网友提到 get_json_object ,json_tuple 的使用和案例 ,结合 替换和分组函数可以比较容易的对json 数据完成解析 。

    不久前我们遇到一个json 类似 格式如下 :

    {
       home_id : 10000 ,
       person:[
       {
        1p:0001,
        1name:dddd
        expandInfo:[
            {
            1p:0001,
            age:18,
            desc:'love boy',
            reas:ssss,
            salary: 10
            },
            {
            1p:0001,
            age:28,
            desc:'love girl',
            reas:ssss,
            salary: 10
            }
        ]
       },
       {
        2p:0002,
        2name:dddd
        expandInfo:[
            {
            2p:0002,
            age:18,
            desc:'love boy',
            reas:ssss,
            salary: 1
            },
            {
            2p:0002,
            age:28,
            desc:'love girl',
            reas:ssss,
            salary: 10
            }
        ]
       },
       {
        3p:0003,
        3name:xxxx
        expandInfo:[
            {
            3p:0003,
            age:18,
            desc:'love boy',
            reas:ssss,
            salary: 0
            },
            {
            3p:0003,
            age:28,
            desc:'love girl',
            reas:ssss,
            salary: 10
            }
        ]
        }
       ]

    }

    上面数据的基本解析 一个家庭有三个人且每个人都记录了不同年龄段的薪资 ,那么组合后应该有六条数据

    网络上的提供的解决方案是按照  },{  划分,对当前这个数据显然是无能为力的 。

    现在的解决方案是 :

    单独把 expandInfo 区块拿出来 使用上面的解析方法,并把结果保存到 一个单独的表中 t1
    同时 把 expandInfo 区块 从原数据区中使用replace方法 替换掉 ,再使用上面的方法解析 ,结果保存到 t2

    因为 t1 t2 都有相对明确的主外键关系  1p,2p,3p 代表唯一id .两边关联 就可以得到最终结果.


    ---------------------------------------------------------------------------------
    我是秉寒,为了财务自由,让我们加倍努力工作,学习,积极健康的生活,做好财富管理和投资

  • 相关阅读:
    美国首位女计算机博士荣获今年图灵奖
    此人需要关注一下
    Microsoft的壮大与IBM对Sun的收购
    文章介绍:Sexy Lexing with Python
    程序员的门道
    闲谈:敏捷与否的区分方法、对组织内部人员的现实作用与长远利益
    聊聊最俗的工厂相关话题
    人之患在好为人师
    TIOBE的头头儿和“反Java”的教授
    敏捷的核心究竟是什么
  • 原文地址:https://www.cnblogs.com/TendToBigData/p/10501179.html
Copyright © 2011-2022 走看看