Hive基础(十二)-hive 存储,解析,处理json数据

举报
bigdata张凯翔 发表于 2021/03/26 00:26:01 2021/03/26
【摘要】 hive 存储,解析,处理json数据 hive 处理json数据总体来说有两个方向的路走 将json以字符串的方式整个导入Hive表,然后通过使用UDF函数解析已经导入到hive中的数据,比如使用LATERAL VIEW json_tuple的方法,获取所需要的列名。 在导入之前将json拆成各个字段,导入Hive表的数据是已经解析过得。这将需要使用第三方的SerDe。 ...

hive 存储,解析,处理json数据
hive 处理json数据总体来说有两个方向的路走

  • 将json以字符串的方式整个导入Hive表,然后通过使用UDF函数解析已经导入到hive中的数据,比如使用LATERAL VIEW json_tuple的方法,获取所需要的列名。
  • 在导入之前将json拆成各个字段,导入Hive表的数据是已经解析过得。这将需要使用第三方的SerDe。

  • 第一种:
  • get_json_object(string json_string, string path)
    第一个参数填写json对象变量,第二个参数使用$表示json变量标识,然后用 . 或 [] 读取对象或数组;如果输入的json字符串无效,那么返回NULL。
    每次只能返回一个数据项。
{"id": 1701439105,"ids": [2154137571,3889177061,1496915057,1663973284],"total_number": 493}
CREATE TABLE IF NOT EXISTS tmp_json_test (
json string
)
STORED AS textfile ;
load data local inpath '/root/hivedata/json_test.txt' overwrite into table tmp_json_test;
select get_json_object(t.json,'$.id'), get_json_object(t.json,'$.total_number') from tmp_json_test t ;
  • lateral view json_tuple
select t2.* from tmp_json_test t1 lateral view json_tuple(t1.json, 'id', 'total_number') t2 as c1, c2;

  • 第二种
{"id": 1701439105,"ids": [2154137571,3889177061,1496915057,1663973284],"total_number": 493}
http://www.congiu.net/hive-json-serde/
add jar /root/hivedata/json-serde-1.3.7-jar-with-dependencies.jar;
CREATE TABLE tmp_json_array (
id string,
ids array<string>,
`total_number` int)
ROW FORMAT SERDE 'org.openx.data.jsonserde.JsonSerDe'
STORED AS TEXTFILE;
load data local inpath '/root/hivedata/json_test.txt' overwrite into table tmp_json_array;

文章来源: www.jianshu.com,作者:百忍成金的虚竹,版权归原作者所有,如需转载,请联系作者。

原文链接:www.jianshu.com/p/ae4a485467f4

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。