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

发布时间 - 2025-07-09 00:00:00    点击率:

欢迎访问我的github《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部署Hadoop 2.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 可变长度字符串,需要声明最大长度(1到65535之间) 'a', "a"
CHAR 固定长度字符串 'a', "a"
BINARY 字节数组 -
TIMESTAMP 精度到纳秒的时间戳 '2025-03-01 00:00:00'
DATE 日期 '2025-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, '2025-01-01', '2025-03-01 00:00:00');

使用函数,在新增的记录的时候,将timestamp_field字段设置为当前时间,注意和前面的insert语句比较一下,使用函数时必须用到select XXX from XXX limit 1这样的语法:

insert into t1 select 103, 'a103', true, '2025-01-01', current_timestamp() from t1 limit 1;

看一下新增的两条记录:

hive> select * from t1;
OK
101 a101 true 2025-01-01 2025-03-01 00:00:00
103 a103 true 2025-01-01 2025-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
2025-01-01 00:00:00
2025-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
2025-03-01
2025-10-27
Time taken: 0.063 seconds, Fetched: 2 row(s)

将TIMESTAMP字段转为BIGINT:

select unix_timestamp(timestamp_field) from t1;

响应:

hive> select unix_timestamp(timestamp_field) from t1;
OK
1583020800
1603802555
Time taken: 0.059 seconds, Fetched: 2 row(s)

至此,Hive的基本数据类型已经了解,接下来的章节我们将一起学习和了解复杂数据类型。


# linux  # centos  # git  # 工具  # sql语句  # 聚合函数  # red  # sql  # 架构  # 数据类型  # String  # select  # date  # timestamp  # 字符串  # 布尔型  # char  # 字符串类型  # github  # hadoop  # hive  # 数据库  # mapreduce  # sqoop  # 应用开发  # 思维导图  # 自定义  # 分区表  # 请参考  # 学习笔记  # 变长  # 定长  # 浮点数  # 可以通过  # 布尔  # 三种 


相关栏目: 【 网站优化151355 】 【 网络推广146373 】 【 网络技术251813 】 【 AI营销90571


相关推荐: 如何基于PHP生成高效IDC网络公司建站源码?  1688铺货到淘宝怎么操作 1688一键铺货到自己店铺详细步骤  Android Socket接口实现即时通讯实例代码  制作无缝贴图网站有哪些,3dmax无缝贴图怎么调?  弹幕视频网站制作教程下载,弹幕视频网站是什么意思?  今日头条微视频如何找选题 今日头条微视频找选题技巧【指南】  如何彻底删除建站之星生成的Banner?  Laravel如何与Pusher实现实时通信?(WebSocket示例)  Laravel广播系统如何实现实时通信_Laravel Reverb与WebSockets实战教程  Python3.6正式版新特性预览  韩国网站服务器搭建指南:VPS选购、域名解析与DNS配置推荐  高防服务器租用如何选择配置与防御等级?  宙斯浏览器视频悬浮窗怎么开启 边看视频边操作其他应用教程  通义万相免费版怎么用_通义万相免费版使用方法详细指南【教程】  详解Android——蓝牙技术 带你实现终端间数据传输  百度输入法ai面板怎么关 百度输入法ai面板隐藏技巧  Laravel Telescope怎么调试_使用Laravel Telescope进行应用监控与调试  Laravel怎么实现搜索功能_Laravel使用Eloquent实现模糊查询与多条件搜索【实例】  三星网站视频制作教程下载,三星w23网页如何全屏?  JavaScript常见的五种数组去重的方式  如何用5美元大硬盘VPS安全高效搭建个人网站?  教你用AI将一段旋律扩展成一首完整的曲子  活动邀请函制作网站有哪些,活动邀请函文案?  如何安全更换建站之星模板并保留数据?  深圳网站制作培训,深圳哪些招聘网站比较好?  如何在自有机房高效搭建专业网站?  Laravel如何使用Service Container和依赖注入?(代码示例)  js代码实现下拉菜单【推荐】  如何获取上海专业网站定制建站电话?  如何用免费手机建站系统零基础打造专业网站?  教学论文网站制作软件有哪些,写论文用什么软件 ?  Google浏览器为什么这么卡 Google浏览器提速优化设置步骤【方法】  Laravel如何处理CORS跨域问题_Laravel项目CORS配置与解决方案  JS中使用new Date(str)创建时间对象不兼容firefox和ie的解决方法(两种)  Laravel怎么实现API接口鉴权_Laravel Sanctum令牌生成与请求验证【教程】  Laravel API路由如何设计_Laravel构建RESTful API的路由最佳实践  如何用搬瓦工VPS快速搭建个人网站?  Laravel用户密码怎么加密_Laravel Hash门面使用教程  在Oracle关闭情况下如何修改spfile的参数  香港服务器租用每月最低只需15元?  微信h5制作网站有哪些,免费微信H5页面制作工具?  如何在VPS电脑上快速搭建网站?  Android自定义listview布局实现上拉加载下拉刷新功能  昵图网官方站入口 昵图网素材图库官网入口  HTML5空格在Angular项目里怎么处理_Angular中空格的渲染问题【详解】  如何挑选优质建站一级代理提升网站排名?  广州网站制作公司哪家好一点,广州欧莱雅百库网络科技有限公司官网?  如何在建站主机中优化服务器配置?  php8.4header发送头信息失败怎么办_php8.4header函数问题解决【解答】  iOS中将个别页面强制横屏其他页面竖屏