Hive 解析 json,json array

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/haohaixingyun/article/details/81097251

在大数据处理中经常遇到业务端发送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 .两边关联 就可以得到最终结果.

扫描二维码关注公众号,回复: 3378970 查看本文章


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

猜你喜欢

转载自blog.csdn.net/haohaixingyun/article/details/81097251