Hive学习——解析JSON字符串

目录

1.JSON数据

2.创建内部表

3.上传本地文件到hive表的路径下

4.查看文件是否成功上传

5.查看表数据

6.对复杂数据类型取值


1.JSON数据

vim /opt/module/data/t1.txt

{
    "name": "dasongsong",
    "friends": [
        "bingbing",
        "lili"
    ],
    "students": {
        "xiaohaihai": 18,
        "xiaoyangyang": 16
    },
    "address": {
        "street": "hui long guan",
        "city": "beijing",
        "postal_code": 10010
    }
}

2.创建内部表

        这里创建内部表,也可以创建外部表,根据业务需要来。

        考虑使用专门负责JSON文件的JSON Serde,设计表字段时,表的字段与JSON字符串中的一级字段保持一致,对于具有嵌套结构的JSON字符串,考虑使用合适复杂数据类型保存其内容。

create table if not exists teacher
(
    name     string,
    friends  array<string>,
    students map<string,int>,
    address  struct<street:string,city:string,postal_code:int>
) row format serde 'org.apache.hadoop.hive.serde2.JsonSerDe'
    location '/user/hive/warehouse/teacher';

3.上传本地文件到hive表的路径下

dfs -put /opt/module/data/teacher.txt /user/hive/warehouse/teacher;

4.查看文件是否成功上传

dfs -cat /user/hive/warehouse/teacher/teacher.txt;

{"name":"dasongsong","friends":["bingbing","lili"],"students":{"xiaohaihai":18,"xiaoyangyang":16},"address":{"street":"hui long guan","city":"beijing","postal_code":10010}}

5.查看表数据

select * from teacher;

6.对复杂数据类型取值

select name,
       friends[0]               as f1,
       friends[1]               as f2,
       students['xiaohaihai']   as s1,
       students['xiaoyangyang'] as s2,
       address.street,
       address.city,
       address.postal_code
from teacher;

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值