hive支持的数据类型不包括:hive学习笔记之一 基本数据类型
hive支持的数据类型不包括:hive学习笔记之一 基本数据类型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的基本数据类型已经了解,接下来的章节咱们一起学习了解复杂数据类型;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;响应:create table t1( int_field INT string_field STRING bool
欢迎访问我的GitHubhttps://github.com/zq2599/blog_demos
内容:所有原创文章分类和汇总,及配套源码,涉及Java、Docker、Kubernetes、DevOPS等;
关于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
- 需要先部署hadoop环境,请参考《Linux部署hadoop2.7.7集群》
- hadoop部署成功后,安装和体验hive其参考《安装和体验hive》
Hive支持基本和复杂数据类型:
- 基本数据类型:包括数值型、布尔型、字符串类型和时间戳类型;
- 复杂数据类型:数组、映射、结构;
- 通过思维导图来分类和理解:
- 下面通过列表说明所有的基本数据类型:
- 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');
- 使用函数,在新增的记录的时候,将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;
- 看一下新增的两条记录:
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/questions/37863194/insert-timestamp-into-hive/37868132
欢迎关注我的公众号:程序员欣宸