前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >hive学习笔记之一:基本数据类型

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

原创
作者头像
程序员欣宸
修改2021-06-24 10:13:04
6190
修改2021-06-24 10:13:04
举报
文章被收录于专栏:实战docker实战docker

欢迎访问我的GitHub

这里分类和汇总了欣宸的全部原创(含配套源码):https://github.com/zq2599/blog_demos

《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);

常用类型综合实战

  • 启动hive,进入交互模式,执行以下语句建表,字段类型是常用的几种:
代码语言:txt
复制
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语句新增一条记录:
代码语言:txt
复制
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这样的语法:
代码语言:txt
复制
insert into t1 
select 
103, 'a103', true, '2020-01-01', current_timestamp() 
from t1 limit 1;
  • 看一下新增的两条记录:
代码语言:txt
复制
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)
  • 查看当前时间:
代码语言:txt
复制
select unix_timestamp();
  • 响应:
代码语言:txt
复制
hive> select unix_timestamp();
OK
1603802631
Time taken: 0.028 seconds, Fetched: 1 row(s)
  • 将DATE字段转为TIMESTAMP:
代码语言:txt
复制
select cast(date_field as timestamp) from t1;

响应:

代码语言:txt
复制
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:
代码语言:txt
复制
select to_date(timestamp_field) from t1;

响应:

代码语言:txt
复制
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:
代码语言:txt
复制
select to_date(timestamp_field) from t1;

响应:

代码语言:txt
复制
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

关于容器和镜像的环境

如果您不想自己搭建kubernetes环境,推荐使用腾讯云容器服务TKE:无需自建,即可在腾讯云上使用稳定, 安全,高效,灵活扩展的 Kubernetes 容器平台;

如果您希望自己的镜像可以通过外网上传和下载,推荐腾讯云容器镜像服务TCR:像数据加密存储,大镜像多节点快速分发,跨地域镜像同步

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

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

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

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

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 欢迎访问我的GitHub
  • 《hive学习笔记》系列导航
  • 关于hive学习笔记系列
  • 环境信息
  • 关于hive的部署
  • 数据类型简介
  • 基本数据类型
  • 关于三种字符串类型
  • 常用类型综合实战
  • 参考文档
  • 关于容器和镜像的环境
  • 你不孤单,欣宸原创一路相伴
  • 欢迎关注公众号:程序员欣宸
相关产品与服务
容器服务
腾讯云容器服务(Tencent Kubernetes Engine, TKE)基于原生 kubernetes 提供以容器为核心的、高度可扩展的高性能容器管理服务,覆盖 Serverless、边缘计算、分布式云等多种业务部署场景,业内首创单个集群兼容多种计算节点的容器资源管理模式。同时产品作为云原生 Finops 领先布道者,主导开源项目Crane,全面助力客户实现资源优化、成本控制。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档