hive学习笔记3 数据类型——hive的建表字段存储类型有哪些数据定义给建表所需的字段定义存储格式、取值范围、运算规则让 Hive 知道数据怎么存、占多大空间、能做什么计算、怎么去校验合法性。一、数值型数据Numeric Types1基础定义数值型数据限定了取值范围用来防止非法数据是指写入字段的数据不符合该字段定义的数据类型规则、取值范围、格式约束Hive 识别不出的数据例如字段定义 TINYINT范围 - 128~127写入 200数值越界即非法数据写入。以字节长度、值域严格区分用来约束数值大小又可细分为①TINYINT1 字节只能存 -128~127适合年龄、评分这种极小数字②SMALLINT2 字节±3 万多适合门店编号、小计数③INT4 字节常规 id、数量④BIGINT8 字节订单流水号、超大累计金额防止数值溢出报错。注如果把 200 存入 TINYINT会直接溢出报错要提前拦截脏数据。小汇总不同类型数据的存储空间、查询性能不同数值数据占用磁盘 / 内存字节不同合理选择可以压缩数据①小数字用 TINYINT 只占 1 字节不用统一占 8 字节的 BIGINT海量日志、明细表存储成本直接下降②浮点FLOAT4 字节单精度、DOUBLE8 字节双精度精度要求低时用 FLOAT 省空间③字符串CHAR定长、VARCHAR可变长、STRING无限长短固定文本用 CHAR短可变文本用 VARCHAR长文本用 STRING④复杂类型 ARRAY/MAP/STRUCT批量存储多值数据不用拆成多张表减少关联查询。注存储更小 → 磁盘 IO 更少 → MapReduce/Spark 查询速度更快二、日期型数据Date/Time Types1TIMESTAMPHive 0.8.0 开始支持①存储内容完整的时间戳包含年-月-日 时-分-秒.毫秒 例2026-07-04 15:30:28.123)②底层存储本质是距离UTC 1970-01-01 00:00:00 的毫秒数“Unix纪元”。③适用场景日志、埋点、订单创建 / 支付时间需要精确到时分秒毫秒需要做时间戳差值、毫秒级统计的场景。④特性支持和字符串、数字时间戳互相转换可通过函数substrtimestamp‘第几位开始’‘取几位数’提取年、月、日、时、分、秒、毫秒。2DATEHive 0.12.0 开始支持①存储内容只保存年月日不带时分秒标准格式yyyy-MM-dd示例2026-07-04②底层存储距离 1970-01-01 的天数占用空间比 TIMESTAMP 更小。③适用场景按天统计日活、每日销售额、日期维度分区不需要精确到小时只关心日期的业务④特性如果把 2026-07-04 12:30:00 写入 DATE 字段会自动截断时间只保留日期部分只能做天数加date_add减date_sub无法获取小时、分钟。3INTERVALHive 1.2.0 开始支持①作用专门表示时间间隔不是固定时间点是一段时长。②分类年月间隔INTERVAL ‘1’ YEAR、INTERVAL ‘3’ MONTH日时分秒间隔INTERVAL ‘2’ DAY、INTERVAL ‘5’ HOUR-- 当前时间 7天select current_date interval ‘7’ day;– 时间戳加2小时select timestamp ‘2026-07-04 10:00:00’ interval ‘2’ hour;③适用场景时间计算比如 “下单 30 分钟后超时”“会员有效期 1 年”④特性不能单独作为表字段存储只用于运算用来给 DATE/TIMESTAMP 做加减。三、字符串型数据String Types1)CHAR定长字符串①基础定义固定长度无论实际数据长度如何存储空间始终为定义的长度。若数据长度不足会用空格填充至指定长度②选择建议数据长度严格固定且查询频繁③储存性能读取快但可能浪费存储。2VARCHAR可变长字符串①基础定义可变长度仅占用实际数据长度所需的空间。不填充空格适合存储长度变化较大的数据如姓名、地址。比CHAR节省存储空间但在频繁更新时可能产生碎片②选择建议数据长度变化较大需节省存储空间③储存性能存储高效但更新频繁时可能影响性能。3STRING无限长或大文本①基础定义某些数据库如Hive、Spark SQL使用STRING表示可变长文本通常无长度限制所以被定义为万能型的应用数据类型在传统SQL数据库中类似类型可能是TEXT或LONGTEXT②选择建议使用STRING/TEXT存储超大文本或不确定长度的内容。适合存储大段文本如日志、文章内容③储存性能适合大文本但可能不支持索引或完整查询优化。四、杂项或混合型数据Misc Types1boolean布尔类型①布尔类型常用于条件判断、逻辑运算和控制流程中。例如在编程中布尔值用于决定是否执行某段代码。它仅包含两个可能的值true表示逻辑真false表示逻辑假。布尔运算包括与AND两个操作数都为 true 时结果为 true或OR至少一个操作数为 true 时结果为 true非NOT对操作数取反。②Hive 支持 BOOLEAN 数据类型用于存储逻辑值 TRUE 或 FALSE。可以直接在表中定义布尔列或在条件表达式中使用。CREATETABLEexample_boolean(idINT,is_activeBOOLEAN);2binary二进制①是一种数值系统基于 2 的幂次方只使用两个数字0 和 1。它是计算机中最基础的数据表示方式因为计算机的硬件如晶体管只能识别两种状态开1和关0。Binary 是数值系统0/1 用于数据表示和计算可以表示任意数值通过组合 0 和 1。②应用场景包括数据存储如文件、内存数据传输如网络协议数值计算如二进制算术③Hive 的 BINARY 类型用于存储二进制数据如字节数组。适用于存储原始字节流例如图片、序列化对象等。第一步—创建包含二进制列的表CREATETABLEexample_binary(idINT,dataBINARY);第二步—插入二进制数据需通过 Hive 函数或外部工具转换-- 使用 base64 编码字符串转换为二进制INSERTINTOexample_binaryVALUES(1,unhex(48656C6C6F));-- Hello 的十六进制表示第三步—复制插入查询二进制数据时可能需要转换SELECTid,hex(data)FROMexample_binary;注Boolean仅存储 TRUE/FALSE用于逻辑判断Binary存储任意字节流需特殊函数如 hex()、unhex()处理。五、复杂型数据Complex Types1ARRAY 下标取值①ARRAY 索引从 0 或 1 开始取决于系统实现通过 [n] 直接访问第 n 个元素如下语句SELECTarray_column[n]ASfirst_elementFROMtable;②explode 炸裂将 ARRAY 展开为多行每行包含一个元素。SELECTexplode(array_column)ASexploded_valueFROMtable;2MAP 按 key 取值通过 map[‘key’] 或 map.key 语法获取指定键的值。SELECTmap_column[name]ASname_valueFROMtable;键/值展开使用 explode 分离键和值为多行。SELECTkey,valueFROMtableLATERALVIEWexplode(map_column)explodedASkey,value;3STRUCT 按字段名取嵌套数据①通过 struct.field_name 或 struct[‘field_name’] 获取嵌套字段SELECTstruct_column.user_id,struct_column.address.cityFROMtable;注ARRAY/MAP 的索引或键若不存在可能返回 NULLSTRUCT 字段名需区分大小写。***总结***数据类型是 Hive 对字段的约束 、存储 、运算规范约束脏数据、节省存储空间、定义计算方式、保证数据精度、兼容多引擎交互是建表时最基础、直接影响性能和数据准确性的配置。

相关新闻

最新新闻

金属表面划痕/凹坑自动识别MATLAB工具(带图形操作界面,免训练)

金属表面划痕/凹坑自动识别MATLAB工具(带图形操作界面,免训练)

本文还有配套的精品资源,点击获取 简介:直接运行就能检测金属表面纹理缺陷的MATLAB工具,支持划痕、凹坑、氧化不均等常见问题识别。不用提前标注图片,也不需要深度学习模型或训练过程,靠相位变换技术在频域里增强缺…

2026/7/5 9:22:55
多模态大模型Qwen3-VL与Llama-Factory微调实战指南

多模态大模型Qwen3-VL与Llama-Factory微调实战指南

1. 多模态模型Qwen3-VL与Llama-Factory技术栈概述Qwen3-VL是阿里云推出的最新一代视觉语言多模态大模型,支持图像和文本的联合理解与生成。相比前代产品,它在视觉问答(VQA)、图像描述生成等任务上展现出更强的性能。模型架构采用基…

2026/7/5 9:22:55
XSS实战利用全攻略:从漏洞发现到权限获取的完整攻击链

XSS实战利用全攻略:从漏洞发现到权限获取的完整攻击链

1. 项目概述:从漏洞到实战的完整链条 在安全测试和渗透评估的领域里,跨站脚本攻击(XSS)是一个老生常谈却又历久弥新的议题。很多初学者在靶场里弹出一个 alert(1) 就欢呼雀跃,认为掌握了XSS的精髓,但现实…

2026/7/5 9:22:55
SSRF漏洞中IP限制绕过技术:从原理到实战的攻防解析

SSRF漏洞中IP限制绕过技术:从原理到实战的攻防解析

1. 项目概述:深入理解SSRF与IP限制绕过的攻防本质 在渗透测试和网络安全研究领域,SSRF(服务器端请求伪造)一直是一个极具威胁且充满挑战的漏洞类型。它之所以危险,是因为它利用了服务器“受信任”的身份,能…

2026/7/5 9:22:55
5分钟掌握XUnity.AutoTranslator:Unity游戏自动翻译终极解决方案

5分钟掌握XUnity.AutoTranslator:Unity游戏自动翻译终极解决方案

5分钟掌握XUnity.AutoTranslator:Unity游戏自动翻译终极解决方案 【免费下载链接】XUnity.AutoTranslator 项目地址: https://gitcode.com/gh_mirrors/xu/XUnity.AutoTranslator 你是否曾因为语言障碍而无法畅玩心仪的Unity游戏?XUnity.AutoTran…

2026/7/5 9:22:54
PyTorch 2.0 实战:L1/L2正则化对比,MNIST分类准确率提升 3%

PyTorch 2.0 实战:L1/L2正则化对比,MNIST分类准确率提升 3%

PyTorch 2.0实战:L1/L2正则化在MNIST分类中的3%准确率提升策略1. 正则化技术核心原理与MNIST实战价值在深度学习模型训练过程中,我们常常面临一个关键矛盾:模型复杂度过高会导致对训练数据的过度记忆(过拟合)&#xff…

2026/7/5 9:17:54

月新闻