• Hive中的数据类型以及案例实操


    @

    基本数据类型

    在这里插入图片描述
    在这里插入图片描述
    对于Hive的String类型相当于数据库的varchar类型,该类型是一个可变的字符串,不过它不能声明其中最多能存储多少个字符,理论上它可以存储2GB的字符数。

    集合数据类型

    在这里插入图片描述
    Hive有三种复杂数据类型ARRAY、MAP 和 STRUCT。ARRAY和MAP与Java中的Array和Map类似,而STRUCT与C语言中的Struct类似,它封装了一个命名字段集合,复杂数据类型允许任意层次的嵌套。
    Map和Struct的区别Struct中属性名是不变的!Map中key可以变化的!

    案例实操

    1. 假设某表有如下一行,我们用JSON格式来表示其数据结构。在Hive下访问的格式为
    {
        "name": "songsong",
        "friends": ["bingbing" , "lili"] ,       //列表Array, 
        "children": {                      //键值Map,
            "xiao song": 18 ,
            "xiaoxiao song": 19
        }
        "address": {                      //结构Struct,
            "street": "hui long guan" ,
            "city": "beijing" 
        }
    }
    
    1. 基于上述数据结构,我们在Hive里创建对应的表,并导入数据。
      创建本地测试文件test.txt
    songsong,bingbing_lili,xiao song:18_xiaoxiao song:19,hui long guan_beijing
    yangyang,caicai_susu,xiao yang:18_xiaoxiao yang:19,chao yang_beijing
    

    注意: 在一个表中,array每个元素之间的分隔符和Map每个Entry之间的分隔符和struct每个属性之间的分隔符需要一致!

    1. Hive上创建测试表test
    create table test(
    name string,
    friends array<string>,
    children map<string, int>,
    address struct<street:string, city:string>
    )
    row format delimited fields terminated by ','
    collection items terminated by '_'
    map keys terminated by ':'
    lines terminated by '
    ';
    

    字段解释:
    row format delimited fields terminated by ',' -- 列分隔符
    collection items terminated by '_' --MAP STRUCT 和 ARRAY 的分隔符(数据分割符号)
    map keys terminated by ':' -- MAP中的key与value的分隔符
    lines terminated by ' '; -- 行分隔符

    1. 导入文本数据到测试表
    hive (default)> load data local inpath ‘/opt/module/datas/test.txt’into table test
    
    1. 访问三种集合列里的数据,以下分别是ARRAY,MAP,STRUCT的访问方式
    hive (default)> select friends[1],children['xiao song'],address.city from test
    where name="songsong";
    OK
    _c0     _c1     city
    lili    18      beijing
    Time taken: 0.076 seconds, Fetched: 1 row(s)
    
  • 相关阅读:
    strtok和strtok_r
    几种更新(Update语句)查询的方法
    常见的几种RuntimeException
    初识ASP.NET---若干常见错误
    Microsoft.AlphaImageLoader滤镜解说
    情绪管理--不要总做“好脾气”的人。
    Linux中搭建SVNserver
    Java虚拟机的启动与程序的执行
    Ubuntu下deb包的安装方法
    財哥面京东dm的经历【帮財哥发的】
  • 原文地址:https://www.cnblogs.com/sunbr/p/13759189.html
Copyright © 2020-2023  润新知