看了一篇使用hive解析json报错的文章,在平台中试了一下发现没问题,如果报错,可能在yarn中缺少org.apache.hive.hcatalog.data.JsonSerDe类,以下是测试过程
一、声明
1、创建表
create table if not exists temp.student(
student map comment "学生信息",
class map comment "课程信息",
teacher map comment "授课老师信息"
)
comment "学生课程信息"
row format serde 'org.apache.hive.hcatalog.data.JsonSerDe'
stored as textfile;
二、数据
1、创建json.txt
{"student":{"name":"king","age":11,"sex":"M"},"class":{"book":"语文","level":2,"score":80},"teacher":{"name":"t1","class":"语文"}}
{"student":{"name":"wang","age":12,"sex":"M"},"class":{"book":"语文","level":2,"score":80},"teacher":{"name":"t1","class":"语文"}}
{"student":{"name":"test","age":13,"sex":"M"},"class":{"book":"语文","level":2,"score":80},"teacher":{"name":"t1","class":"语文"}}
{"student":{"name":"test2","age":14,"sex":"M"},"class":{"book":"语文","level":2,"score":80},"teacher":{"name":"t1","class":"语文"}}
{"student":{"name":"test3","age":15,"sex":"M"},"class":{"book":"语文","level":2,"score":80},"teacher":{"name":"t1","class":"语文"}}
{"student":{"name":"test4","age":16,"sex":"M"},"class":{"book":"语文","level":2,"score":80},"teacher":{"name":"t1","class":"语文"}}
2、上传到student目录
hadoop fs -put json.txt /apps/hive/warehouse/temp.db/student
三、测试
1、全表查询
select * from temp.student;
2、解析查询
select student['name'] as stuName,class['book'] as cls_book, class['score'] as cls_score,teacher['name'] as tech_name from temp.student;
注意:本文归作者所有,未经作者允许,不得转载