json数据加载到hive

1.注意json数据格式,键必须是双引号

这里用的表数据如下:price,name,shop,comment,p,op,m

2.要把每一个字段值导入,不能直接导入,需要借助mapreducer,一行一行将对应值写入表。

首先建立一个临时表,将一行json数据做一个字段

create table tmpjson(line string) row format delimited fields terminated by "\n";

3.将json数据导入到表tmpjson中,可以用load data 也可以直接上传文件到表文件夹。(我的数据文件在hadoop 根目录下)

load data inpath "/goods.txt" into table tmpjson;

或者

将goods.txt 移动到表文件夹下

hadoop fs -mv  /goods.txt  /user/hive/warehouse/tmpjson

4.创建一个包含json数据所有字段的表

create table goods(price double,name string,shop string,comment bigint,p double,op double,m double)

5.用json函数get_json_object()解析tmpjson表的数据并插入到goods表中,或者用json_tuple

(注意:插入时循序必须和建立goods表时字段顺序一致)

insert overwrite table goods select get_json_object(line,"$.price") , get_json_object(line,"$.name") , get_json_object(line,"$.shop") , get_json_object(line,"$.comment") , get_json_object(line,"$.p") , get_json_object(line,"$.op") , get_json_object(line,"$.m") from tmp_json;

或用

insert overwrite table test select json_tuple(line,'price','name','shop','comment','p','op','m')as(price,name,shop,comment,p,op,m) from tmp_json;

6.查看goods的数据是否成功

select * from goods

注意:如果数据有null,则json数据可能存在空行

  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值