• hive学习笔记之一:基本数据类型


    欢迎访问我的GitHub

    https://github.com/zq2599/blog_demos

    内容:所有原创文章分类汇总及配套源码,涉及Java、Docker、Kubernetes、DevOPS等;

    《hive学习笔记》系列导航

    1. 基本数据类型
    2. 复杂数据类型
    3. 内部表和外部表
    4. 分区表
    5. 分桶
    6. HiveQL基础
    7. 内置函数
    8. Sqoop
    9. 基础UDF
    10. 用户自定义聚合函数(UDAF)
    11. UDTF

    关于hive学习笔记系列

    • 《hive学习笔记》系列保持了作者一贯的风格,即通过实战学习和了解;
    • 作为一个构建在Hadoop上的数据仓库框架,hive被用来进行数据提取、转化、加载,这是一种可以存储、查询和分析存储在Hadoop中的大规模数据的机制,hive数据仓库工具能将结构化的数据文件映射为一张数据库表,并提供SQL查询功能,能将SQL语句转变成MapReduce任务来执行。(来自:《Hadoop应用开发实战详解(修订版)》)
    • 架构如下,可见最终还是在执行MapReduce:

    在这里插入图片描述

    环境信息

    本文对应的环境信息如下:

    1. CentOS Linux release 7.5.1804
    2. JDK:1.8.0_191
    3. hadoop:2.7.7
    4. hive:1.2.2

    关于hive的部署

    1. 需要先部署hadoop环境,请参考《Linux部署hadoop2.7.7集群》
    2. hadoop部署成功后,安装和体验hive其参考《安装和体验hive》

    数据类型简介

    Hive支持基本和复杂数据类型:

    • 基本数据类型:包括数值型、布尔型、字符串类型和时间戳类型;
    • 复杂数据类型:数组、映射、结构;

    基本数据类型

    • 通过思维导图来分类和理解:

    在这里插入图片描述

    • 下面通过列表说明所有的基本数据类型:
    类型 描述 示例
    BOOLEAN true/false TRUE
    TINYINT 1字节有符号整数,从-128到127 1Y
    SMALLINT 2字节有符号整数,从-32768到32767 1S
    INT 4字节有符号整数,从-2147483648到2147483647 1
    BIGINT 8字节有符号整数,
    从-9223372036854775808到9223372036854775807
    1L
    FLOAT 4字节单精度浮点数 1.0
    DOUBLE 8字节(64位)双精度浮点数 1.0
    DECIMAL 任意精度有符号小数 1.0
    STRING 无上限可变长度字符串 'a', "a"
    VARCHAR 可变长度字符串 'a', "a"
    CHAR 固定长度字符串 'a', "a"
    BINARY 字节数组 -
    TIMESTAMP 精度到纳秒的时间戳 '2020-03-01 00:00:00'
    DATE 日期 '2020-01-01'

    关于三种字符串类型

    1. STRING,变长,无需最大长度声明,理论上能存储2GB字符;
    2. VARCHAR,变长,需要声明最大长度(1到65535之间),例如VARCHAR(100);
    3. CHAR,定长,如CHAR(100);

    常用类型综合实战

    1. 启动hive,进入交互模式,执行以下语句建表,字段类型是常用的几种:
    create table t1(
    int_field  INT,
    string_field STRING,
    boolean_field BOOLEAN,
    date_field DATE,
    timestamp_field TIMESTAMP
    )
    ROW FORMAT DELIMITED FIELDS TERMINATED BY  '	'
    STORED AS TEXTFILE;
    
    1. 用insert语句新增一条记录:
    insert into t1 
    values 
    (101, 'a101', true, '2020-01-01', '2020-03-01 00:00:00');
    
    1. 使用函数,在新增的记录的时候,将timestamp_field字段设置为当前时间,注意和前面的insert语句比较一下,使用函数时必须用到select XXX from XXX limit 1这样的语法:
    insert into t1 
    select 
    103, 'a103', true, '2020-01-01', current_timestamp() 
    from t1 limit 1;
    
    1. 看一下新增的两条记录:
    hive> select * from t1;
    OK
    101	a101	true	2020-01-01	2020-03-01 00:00:00
    103	a103	true	2020-01-01	2020-10-27 20:42:35.729
    Time taken: 0.062 seconds, Fetched: 2 row(s)
    
    1. 查看当前时间:
    select unix_timestamp();
    

    响应:

    hive> select unix_timestamp();
    OK
    1603802631
    Time taken: 0.028 seconds, Fetched: 1 row(s)
    
    1. 将DATE字段转为TIMESTAMP:
    select cast(date_field as timestamp) from t1;
    

    响应:

    hive> select cast(date_field as timestamp) from t1;
    OK
    2020-01-01 00:00:00
    2020-01-01 00:00:00
    Time taken: 0.051 seconds, Fetched: 2 row(s)
    
    1. 将TIMESTAMP字段转为DATE:
    select to_date(timestamp_field) from t1;
    

    响应:

    hive> select to_date(timestamp_field) from t1;
    OK
    2020-03-01
    2020-10-27
    Time taken: 0.063 seconds, Fetched: 2 row(s)
    
    1. 将TIMESTAMP字段转为BIGINT:
    select to_date(timestamp_field) from t1;
    

    响应:

    hive> select to_date(timestamp_field) from t1;
    OK
    2020-03-01
    2020-10-27
    Time taken: 0.063 seconds, Fetched: 2 row(s)
    

    至此,hive的基本数据类型已经了解,接下来的章节咱们一起学习了解复杂数据类型;

    参考文档

    https://stackoverflow.com/questions/37863194/insert-timestamp-into-hive/37868132

    你不孤单,欣宸原创一路相伴

    1. Java系列
    2. Spring系列
    3. Docker系列
    4. kubernetes系列
    5. 数据库+中间件系列
    6. DevOps系列

    欢迎关注公众号:程序员欣宸

    微信搜索「程序员欣宸」,我是欣宸,期待与您一同畅游Java世界...

  • 相关阅读:
    fopen flock fclose 文件用法
    thinkphp并发 阻塞模式与非阻塞模式
    thinkphp3.2 控制器导入模型
    thinkphp3.2 session时间周期无效
    UWP滑动后退
    旺信UWP公测邀请
    旺信UWP倒计时
    UWP应用开发系列视频教程简介
    新浪微博UWP UI意见征求
    淘宝UWP--自定义图片缓存
  • 原文地址:https://www.cnblogs.com/bolingcavalry/p/14515462.html
Copyright © 2020-2023  润新知