hive学习笔记之一:基本数据类型
欢迎访问我的GitHub
https://github.com/zq2599/blog_demos
内容:所有原创文章分类汇总及配套源码,涉及Java、Docker、Kubernetes、DevOPS等;
《hive学习笔记》系列导航
关于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');
- 使用函数,在新增的记录的时候,将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
你不孤单,欣宸原创一路相伴
欢迎关注公众号:程序员欣宸
微信搜索「程序员欣宸」,我是欣宸,期待与您一同畅游Java世界...
hive学习笔记之一:基本数据类型的更多相关文章
- hive学习笔记之三:内部表和外部表
欢迎访问我的GitHub https://github.com/zq2599/blog_demos 内容:所有原创文章分类汇总及配套源码,涉及Java.Docker.Kubernetes.DevOPS ...
- hive学习笔记之四:分区表
欢迎访问我的GitHub https://github.com/zq2599/blog_demos 内容:所有原创文章分类汇总及配套源码,涉及Java.Docker.Kubernetes.DevOPS ...
- hive学习笔记之五:分桶
欢迎访问我的GitHub https://github.com/zq2599/blog_demos 内容:所有原创文章分类汇总及配套源码,涉及Java.Docker.Kubernetes.DevOPS ...
- hive学习笔记之六:HiveQL基础
欢迎访问我的GitHub https://github.com/zq2599/blog_demos 内容:所有原创文章分类汇总及配套源码,涉及Java.Docker.Kubernetes.DevOPS ...
- hive学习笔记之七:内置函数
欢迎访问我的GitHub https://github.com/zq2599/blog_demos 内容:所有原创文章分类汇总及配套源码,涉及Java.Docker.Kubernetes.DevOPS ...
- hive学习笔记之九:基础UDF
欢迎访问我的GitHub https://github.com/zq2599/blog_demos 内容:所有原创文章分类汇总及配套源码,涉及Java.Docker.Kubernetes.DevOPS ...
- Typescript 学习笔记二:数据类型
中文网:https://www.tslang.cn/ 官网:http://www.typescriptlang.org/ 目录: Typescript 学习笔记一:介绍.安装.编译 Typescrip ...
- hive学习笔记之十:用户自定义聚合函数(UDAF)
欢迎访问我的GitHub 这里分类和汇总了欣宸的全部原创(含配套源码):https://github.com/zq2599/blog_demos 本篇概览 本文是<hive学习笔记>的第十 ...
- hive学习笔记之十一:UDTF
欢迎访问我的GitHub https://github.com/zq2599/blog_demos 内容:所有原创文章分类汇总及配套源码,涉及Java.Docker.Kubernetes.DevOPS ...
随机推荐
- springboot源码解析-管中窥豹系列之BeanDefinition(八)
一.前言 Springboot源码解析是一件大工程,逐行逐句的去研究代码,会很枯燥,也不容易坚持下去. 我们不追求大而全,而是试着每次去研究一个小知识点,最终聚沙成塔,这就是我们的springboot ...
- 梨子带你刷burp练兵场(burp Academy) - 服务端篇 - Sql注入配套漏洞讲解笔记
目录 Sql注入 什么是Sql注入呢? Sql注入有哪些例子? 检索隐藏数据 打破应用逻辑 利用Union进行跨库查询 如何确定利用Union的注入攻击所需的列数呢? 如何确定Union的查询结果中哪 ...
- Java解决Hash(散列)冲突的四种方法--开放地址法(线性探测,二次探测,伪随机探测)、链地址法、再哈希、建立公共溢出区
最近时间有点紧,暂时先放参考链接了,待有时间在总结一下: 查了好多,这几篇博客写的真心好,互有优缺点,大家一个一个看就会明白了: 参考 1. 先看这个明白拉链法(链地址法),这个带源码,很好看懂,只不 ...
- springboot使用RestTemplate+httpclient连接池发送http消息
简介 RestTemplate是spring支持的一个请求http rest服务的模板对象,性质上有点像jdbcTemplate RestTemplate底层还是使用的httpclient(org.a ...
- Worktile vs Teambition
Worktile vs Teambition 项目管理.团队协作 企业服务.协同办公 worktile 易成科技 北京易成星光科技有限公司 https://www.tianyancha.com/com ...
- macOS & pbcopy
macOS & pbcopy copy from command line pbcopy $ whoami | pbcopy # xgqfrms-mbp $ echo "hello, ...
- webpack & chunkhash
webpack & chunkhash https://webpack.js.org/configuration/output/#outputchunkfilename https://web ...
- Github Trending All In One
Github Trending All In One github trending https://github.com/trending https://github.com/trending/j ...
- 新手如何通过内存和NGK DeFi Baccarat进行组合投资?
区块链市场在2020年迎来了大爆发,资本市场异常火热.无论是内存,还是DeFi,都无疑是这个火爆的区块链市场中的佼佼者.通过投资内存和DeFi,很多投资者都已经获取了非常可观的收益,尝到了资本市场带来 ...
- 微信小程序(二)-语法学习
语法学习 一 模板语法 https://developers.weixin.qq.com/miniprogram/dev/framework/view/wxml/ 1.数据代码 // pages/bl ...