Hive学习小记-(5)表字段变动频繁时用json格式
作者:互联网
建表场景
create test_json( id int ,student string ) row format delimited fields terminated by ' ';
-- 假数据: 1 {"name":"zhangsan","age":17,"sex":"F"} --这里一定记得字符串要加双引号 2 {"name":"lisi","age":23,"sex":"M"} -- 上传文件之后 load data inpath 'file_path' into table test_json;
select * from test_json #可以查询
select id,get_json_object(student,'$.name') from test_json #可以查询,但这里写'$[name]'查不出来
每天insert overwrite数据场景,以及后续频繁变化处理
-- 先创建一张抽数源表,并灌好数据 create table student( id int ,name string ,age int ,sex string
,phone string ) row format delimited fields terminated by ' ';
load data inpath 'file_path' into table student;
-- 从源表加工到json string表,这里一定要调好格式!!!不然后面解析不了 insert overwrite table test_json select id,concat('{\"name\":\"',name,'\",\"age\":',age,',\"sex\":\"',cast(sex as string),'\"}') --频繁变化字段直接加在json from student as a
-- 这样的话从源表加工到json string表的字段若频繁变化,可以都加工到json字段中,下游应用时解析对应字段即可 --查看json格式 select * from test_json --查看json string字段中需要的name字段 select id,get_json_object(student,'$.name') from test_json
TIPS
另一种直接读json文件可以建表,但难以适应字段变化
https://blog.csdn.net/oZuoLuo123/article/details/91410987
标签:name,时用,Hive,--,json,student,test,string 来源: https://www.cnblogs.com/foolangirl/p/14193982.html