hive的概述和数据类型

一、Hive概述

  1.Hive简介

  Hive数据仓库软件有助于使用SQL读取、编写和管理驻留在分布式存储中的大型数据集。提供了命令行工具和JDBC驱动程序以将用户连接到Hive。

  Hive可以将SQL语句自动转化为Mapreduce程序,节省了手写框架的困难。

 

  2.Hive优缺点

  优点:1)操作接口采用了SQL,避免了首先MR程序,简化开发,降低学习成本;

     2)Hive依赖于HDFS做存储,是HDFS上的工具;

     3)Hive虽然使用SQL,但是他能处理大规模的数据;

     4)Hive支持自定义函数。

  缺点:1)Hive执行延迟较高,大多适用于实时性不高的场景或用于处理历史数据;

     2)Hive的SQL表达能力有限,有些复杂场景还需要MR程序;

     3)hive效率低,优化较难。

 

二、Hive架构

  Hive提供了一下了接口:hive shell、JDBC/ODBC

  Hive的工作流程:

    1.客户端可以通过多种接口来使用hvie,比如cli(命令行)、jdbc(java);

    2.比如使用命令行select count(*) from user调用SQL

    客户端回去Meta元数据中调用MySQL的数据(hive默认数据库是derby,我们可以修改指定为MySQL);

    3.从Meta获取数据库数据后,命令行和数据一次传入SQL Parser解析器、Physical编译器、Query优化器、Execution执行器;

    4.最后对生成的MR程序进行运算,返回结果。

 

三、Hive中的数据类型

Java数据类型Hive数据类型类型长度
bytetinyint1byte
shortsmallint2byte
intint4byte
longbigint8byte
floatfloat单精度浮点数
doubledouble双精度浮点数
stringstring字符串
 timestamp时间类型
 binary字节数组

 

转载于:https://www.cnblogs.com/HelloBigTable/p/10675258.html

<think>好的,用户之前已经让我整理过Hive数据类型表格,现在他们又问“hive有哪些数据类型”,看起来可能希望得到更简洁或不同形式的回答。我需要确认用户的需求是否有变化,是想要更详细的分类,还是更简要的概述。 首先,回顾之前的回答,我已经提供了一个结构清晰的表格,分基本类型、字符串/时间、复杂类型,并附带了重要说明。用户这次的问题可能只是想快速了解有哪些类型,不需要表格形式,或者需要更新到最新版本的Hive数据类型。 检查用户的问题,没有提到版本,但之前的回答是基于Hive 3.x的。需要确认是否有新版本的数据类型变化,但根据现有知识,Hive的主要数据类型在3.x之后变化不大,所以保持原分类。 用户可能没有仔细阅读之前的表格,或者需要更口语化的总结。这时候应该分点列出,让回答更易读。同时,用户可能对某些类型的用途或示例感兴趣,需要适当举例说明。 另外,需要注意用户是否在开发或数据处理中遇到问题,可能需要数据类型的选择建议。比如DECIMAL的精度问题,或者复杂类型的嵌套使用,这些在之前的重要说明中有提到,但可以再次强调关键点。 避免重复之前的内容过多,但确保涵盖所有主要数据类型。需要检查是否有遗漏的类型,比如BINARY、UNIONTYPE是否已包含在内。之前的表格已经覆盖了这些,所以可以确认完整性。 最后,保持回答结构清晰,分大类,每个类别下列举具体类型,简要说明示例。同时,补充使用建议,帮助用户更好地应用这些数据类型。这样用户不仅能知道有哪些类型,还能了解如何选择使用它们。</think>根据Hive 3.x规范,其数据类型可分为**基本类型、字符串/时间类型、复杂类型**三类,具体整理如下(含关键说明示例): --- ### 一、基本类型(数值与布尔) | 数据类型 | 描述 | 示例 | |-------------------|----------------------------------------------------------------------|--------------------------| | `TINYINT` | 1字节整数(范围:$-128$到$127$) | `age TINYINT` | | `SMALLINT` | 2字节整数($-32,768$到$32,767$) | `id SMALLINT` | | `INT/INTEGER` | 4字节整数($-2^{31}$到$2^{31}-1$) | `count INT` | | `BIGINT` | 8字节整数($-2^{63}$到$2^{63}-1$) | `user_id BIGINT` | | `FLOAT` | 单精度浮点数(约$6-7$位小数) | `ratio FLOAT` | | `DOUBLE` | 双精度浮点数(约$15$位小数) | `score DOUBLE` | | `DECIMAL(p,s)` | 精确小数(最大精度$p=38$,小数位数$s$) | `price DECIMAL(10,2)` | | `BOOLEAN` | 布尔值(`true`/`false`) | `is_valid BOOLEAN` | --- ### 二、字符串与时间类型 | 数据类型 | 描述 | 示例 | |-------------------|----------------------------------------------------------------------|--------------------------| | `STRING` | 无长度限制的文本 | `name STRING` | | `VARCHAR(max)` | 可变长度字符串($1 \leq max \leq 65535$) | `title VARCHAR(255)` | | `CHAR(length)` | 定长字符串($1 \leq length \leq 255$) | `code CHAR(5)` | | `TIMESTAMP` | 时间戳(精确到纳秒) | `event_time TIMESTAMP` | | `DATE` | 日期(格式:$YYYY-MM-DD$) | `birthday DATE` | | `BINARY` | 二进制数据(如图片、文件) | `file_data BINARY` | --- ### 三、复杂类型(集合与结构) | 数据类型 | 描述 | 示例 | |------------------------------|----------------------------------------------------------------------|--------------------------------------| | `ARRAY<data_type>` | 同类型元素的有序集合 | `tags ARRAY<STRING>` | | `MAP<key_type, value_type>` | 键值对集合(键唯一) | `scores MAP<STRING, INT>` | | `STRUCT<field:data_type,...>`| 类似结构体,字段可命名 | `address STRUCT<city:STRING, zip:INT>` | | `UNIONTYPE<type1, type2,...>`| 存储多个可能类型中的一个 | `value UNIONTYPE<INT, DOUBLE>` | --- ### **关键补充说明** 1. **DECIMAL精度计算** - 定义`DECIMAL(5,2)`时,整数部分最大为$10^{5-2}-1=999$,小数精度为$0.01$。 - **科学计算建议**:优先使用`DOUBLE`(避免`FLOAT`精度丢失)。 2. **复杂类型嵌套** ```sql -- 多层嵌套示例 CREATE TABLE nested_data ( employee MAP<STRING, ARRAY<STRUCT<department:STRING, salary:DOUBLE>>> ); ``` 3. **类型转换规则** - 隐式转换:`TINYINT → INT → BIGINT → FLOAT → DOUBLE` - 显式转换:`CAST(column AS VARCHAR(10))`
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值