欢送拜访我的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反对根本和简单数据类型:

  • 根本数据类型:包含数值型、布尔型、字符串类型和工夫戳类型;
  • 简单数据类型:数组、映射、构造;

根本数据类型

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

  • 上面通过列表阐明所有的根本数据类型:
类型形容示例
BOOLEANtrue/falseTRUE
TINYINT1字节有符号整数,从-128到1271Y
SMALLINT2字节有符号整数,从-32768到327671S
INT4字节有符号整数,从-2147483648到21474836471
BIGINT8字节有符号整数,
从-9223372036854775808到9223372036854775807
1L
FLOAT4字节单精度浮点数1.0
DOUBLE8字节(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  '\t'STORED AS TEXTFILE;
  1. 用insert语句新增一条记录:
insert into t1 values (101, 'a101', true, '2020-01-01', '2020-03-01 00:00:00');
  1. 应用函数,在新增的记录的时候,将<font color="blue">timestamp_field</font>字段设置为以后工夫,留神和后面的insert语句比拟一下,应用函数时必须用到<font color="blue">select XXX from XXX limit 1</font>这样的语法:
insert into t1 select 103, 'a103', true, '2020-01-01', current_timestamp() from t1 limit 1;
  1. 看一下新增的两条记录:
hive> select * from t1;OK101    a101    true    2020-01-01    2020-03-01 00:00:00103    a103    true    2020-01-01    2020-10-27 20:42:35.729Time taken: 0.062 seconds, Fetched: 2 row(s)
  1. 查看以后工夫:
select unix_timestamp();

响应:

hive> select unix_timestamp();OK1603802631Time 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;OK2020-01-01 00:00:002020-01-01 00:00:00Time 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;OK2020-03-012020-10-27Time 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;OK2020-03-012020-10-27Time taken: 0.063 seconds, Fetched: 2 row(s)

至此,hive的根本数据类型曾经理解,接下来的章节咱们一起学习理解简单数据类型;

参考文档

https://stackoverflow.com/que...

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

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

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

微信搜寻「程序员欣宸」,我是欣宸,期待与您一起畅游Java世界...
https://github.com/zq2599/blog_demos