共计 2665 个字符,预计需要花费 7 分钟才能阅读完成。
欢送拜访我的 GitHub
https://github.com/zq2599/blog_demos
内容:所有原创文章分类汇总及配套源码,波及 Java、Docker、Kubernetes、DevOPS 等;
《hive 学习笔记》系列导航
- 根本数据类型
- 简单数据类型
- 外部表和内部表
- 分区表
- 分桶
- HiveQL 根底
- 内置函数
- Sqoop
- 根底 UDF
- 用户自定义聚合函数(UDAF)
- UDTF
对于 hive 学习笔记系列
- 《hive 学习笔记》系列放弃了作者一贯的格调,即通过实战学习和理解;
- 作为一个构建在 Hadoop 上的数据仓库框架,hive 被用来进行数据提取、转化、加载,这是一种能够存储、查问和剖析存储在 Hadoop 中的大规模数据的机制,hive 数据仓库工具能将结构化的数据文件映射为一张数据库表,并提供 SQL 查问性能,能将 SQL 语句转变成 MapReduce 工作来执行。(来自:《Hadoop 利用开发实战详解(修订版)》)
- 架构如下,可见最终还是在执行 MapReduce:
环境信息
本文对应的环境信息如下:
- CentOS Linux release 7.5.1804
- JDK:1.8.0_191
- hadoop:2.7.7
- hive:1.2.2
对于 hive 的部署
- 须要先部署 hadoop 环境,请参考《Linux 部署 hadoop2.7.7 集群》
- 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’ |
对于三种字符串类型
- STRING,变长,无需最大长度申明,实践上能存储 2GB 字符;
- VARCHAR,变长,须要申明最大长度(1 到 65535 之间),例如 VARCHAR(100);
- CHAR,定长,如 CHAR(100);
罕用类型综合实战
- 启动 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;
- 用 insert 语句新增一条记录:
insert into t1
values
(101, 'a101', true, '2020-01-01', '2020-03-01 00:00:00');
- 应用函数,在新增的记录的时候,将 <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;
- 看一下新增的两条记录:
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)
- 查看以后工夫:
select unix_timestamp();
响应:
hive> select unix_timestamp();
OK
1603802631
Time taken: 0.028 seconds, Fetched: 1 row(s)
- 将 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)
- 将 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)
- 将 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/que…
你不孤独,欣宸原创一路相伴
- Java 系列
- Spring 系列
- Docker 系列
- kubernetes 系列
- 数据库 + 中间件系列
- DevOps 系列
欢送关注公众号:程序员欣宸
微信搜寻「程序员欣宸」,我是欣宸,期待与您一起畅游 Java 世界 …
https://github.com/zq2599/blog_demos
正文完