赞
踩
大数据的 ETL(Extract-Transfer-Load) 过程的 Transfer 阶段,需要对 json 串数据进行转换“拍平”处理。
亲测!超好用 Hive 内置的 json 解析函数 一文中详细介绍过 get_json_object 和 json_tuple 函数如何对 json 串进行有效解析,但美中不足的是这两个函数都无法解析 json 数组,只能解析单个 json 串。
今天的分享将会介绍 Hive 中常用于 json 数组的解析函数及详细使用方法。
数据准备
例如:Hive中有一张 test_json 表,表中 json_data 字段的内容如下:
json_data |
---|
[{"user_id":"1","name":"小琳","age":16},{"user_id":"2","name":"小刘","age":18},{"user_id":"3","name":"小明","age":20}] |
基于以上的 json_data 数据,现需要将以上 json 串数据解析为如下结构数据:
user_id | name | age |
---|---|---|
1 | 小琳 | 16 |
2 | 小刘 | 18 |
3 | 小明 | 20 |
在进行解析之前,先来了解下面两个函数的使用方法。
函数运用
1. explode函数
语法
explode(Array|Map)
说明
explode()函数接收一个 array 或者 map 类型的数据作为输入,然后将 array 或 map 里面的元素按照每行的形式输出。
即将 Hive 一列中复杂的 array 或者 map 结构拆分成多行显示,也被称为列转行函数。
举例
array测试sql语句:
select explode(array('user_id','name','age'));
执行结果:
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。