hive框架与数据类型

本文详细介绍了Hive,一个基于Hadoop的数据仓库工具,它通过HiveQL进行数据查询,支持元数据存储、多种用户接口、查询编译与执行、以及数据的序列化与反序列化。文章还涵盖了Hive的架构组件、数据类型和与计算引擎的集成。
摘要由CSDN通过智能技术生成

hive

Hive是一个基于Hadoop的数据仓库工具,它提供了类似于SQL的查询语言HiveQL来查询和分析大规模数据。Hive将结构化的数据文件映射为一张数据库表,并提供了SQL查询、数据导入导出等功能。HiveQL支持大部分SQL语法,可以在Hadoop集群上执行MapReduce任务来处理数据。它广泛应用于大数据处理场景,例如数据分析、数据挖掘、日志分析等。

hive架构

  • jdbc、commandLine Intefafce(CLI)、hive thrift server、hive web Interface

  • 元数据存储

    存储表、表字段、分区字段、分区信息、表格式等数据

  • Hive驱动程序

    parse解析器->plan任务计划->Optimizer优化器->Executor执行器

  • hive可在哪些计算引擎上执行

    Mapreduce、Tez、Spark

  • 计算引擎资源调度组件

    yarn资源调度系统

  • Hive可读写哪些数据:

    hadoop hdfs/hbase/rds

Hive的架构主要包括以下组件

Metadata Store

元数据存储(Metadata Store):Hive使用元数据存储来管理表、分区、列等信息。元数据存储通常使用关系型数据库(如MySQL、Derby等)来存储,其中记录了表结构、分区信息、表与文件之间的映射关系等。

commandLine Interface

Hive提供了多种用户接口,包括命令行界面(CLI)、图形界面(Hue)、Web接口(Beeline)等,用户可以通过这些接口与Hive进行交互。

Driver

驱动器(Driver):驱动器是Hive的核心组件,负责解析用户提交的HiveQL语句,生成查询计划,并将其转换为一系列的MapReduce任务或Tez任务。驱动器还负责与Hadoop集群的资源管理器通信,调度任务的执行,并收集执行结果返回给用户。

Compiler

查询编译器(Query Compiler):查询编译器负责将用户提交的HiveQL查询语句转换为查询计划。它会对查询语句进行语法和语义检查,确定需要执行的操作(如选择、投影、连接等),并根据数据的存储格式和分布情况生成相应的物理计划。

Execution

执行引擎(Execution Engine):执行引擎负责执行查询计划,并将计算任务分解为一系列的MapReduce任务或Tez任务。执行引擎会与Hadoop集群的资源管理器进行交互,申请执行所需的计算资源,并监控任务的执行情况。

Storage Management

存储管理(Storage Management):存储管理模块负责将数据存储在Hadoop分布式文件系统(HDFS)中,并管理数据的存储格式、压缩方式、分区策略等。Hive支持多种数据存储格式,如文本、序列文件、Parquet、ORC等。

MetaStore Service

元数据服务(MetaStore Service):元数据服务提供了对元数据存储的访问接口,用于查询和修改表、列、分区等信息。它可以独立于Hive运行,也可以与Hive运行在同一个进程中。

Hive的抽象模型

  1. 数据库(Database):Hive中的数据库是一个逻辑容器,用于组织和管理表。每个数据库可以包含多个表,并具有唯一的名称。

  2. 表(Table):表是Hive中最基本的数据存储单位。每个表由一组有序的列和零到多个分区组成。表可以关联到一个特定的数据目录,存储在Hadoop分布式文件系统(HDFS)中的数据文件。

  3. 列(Column):列是表的组成部分,表示数据的属性或字段。每个列都有一个名称和数据类型,用于定义数据的结构。

  4. 分区(Partition):分区是表的逻辑划分,可以将表的数据按照某个列的值进行划分存储。分区可以基于时间、地区、类别等任何合适的列。通过分区,可以提高查询的性能和效率。

  5. 分桶(Bucket):分桶是将表的数据划分为固定数量的块,每个桶中包含相同数量的数据。桶可以在表的分区内进行定义,也可以在没有分区的表上使用。分桶适用于更细粒度的数据划分和更高效的数据查询。

  6. HiveQL:Hive查询语言(HiveQL)是一种类似于SQL的查询语言,用于对Hive中的表进行查询、插入、更新等操作。HiveQL支持大部分SQL语法,并通过执行引擎将查询转化为MapReduce或Tez任务。

hive序列化与反序列化SerDe/InputFormat/OutPutFormat

  • SerDe是Serializer和Deserial的简称,用于序列化和反序列化。序列化,即将对象转化为字节码;反序列化,即将字节码转换为对象的过程

  • Hive读过程:Hdfs files ->InputFormat -> <key,value> ->Deserial->Row Object

  • Hive写过程:Row Object->Serializer-> <key,value> -> OutPutFormat-> Hdfs文件

hive数据类型

primitive_type-基本类型

类型描述
TINYINT整数型,8位有符号整数,取值范围为-128到127。
SMALLINT整数型,16位有符号整数,取值范围为-32768到32767。
INT整数型,32位有符号整数,取值范围为-2147483648到2147483647。
BIGINT整数型,64位有符号整数,取值范围为-9223372036854775808到9223372036854775807。
BOOLEAN布尔型(Boolean):表示逻辑值,只能取true或false。
FLOAT浮点型,单精度浮点数,占4个字节。
DOUBLE浮点型,双精度浮点数,占8个字节。
DOUBLE PRECISION双精度浮点数,占8个字节,这是一种近似值类型
STRING字符串型,可变长度字符串,可以包含任意字符。
BINARY二进制数据类型,用于存储二进制数据,如图片、音频等文件。使用BINARY或BINARY(n)关键字来定义该类型,其中n表示最大长度(以字节为单位),默认为255。
TIMESTAMP时间戳,表示特定的日期和时间。
DECIMAL十进制类型,用于存储精确的十进制数值。
DECIMAL(precision, scale)DECIMAL(precision, scale)关键字用于定义该类型,其中precision表示总位数,scale表示小数点后的位数。例如,DECIMAL(10,2)表示总共10位数,其中2位小数。
DATE日期,只包含年、月、日。
VARCHAR字符串型,可变长度字符串,长度限制在指定范围
CHAR字符串型,固定长度字符串,长度限制在指定范围内

array_type-数组类型

数组类型(Arrays):用于存储一组具有相同数据类型的元素。

array_type
  : ARRAY < data_type >
      //ARRAY<data_type>:表示一个数组,其中data_type是数组元素的数据类型

map_type-map类型

map_type  //:用于存储键值对。
  : MAP < primitive_type, data_type > 
  //表示一个键值对集合,其中primitive_type是键的数据类型,data_type是值的数据类型。

struct_type-结构体类型

struct_type //结构体类型(Structs):用于存储一组具有不同数据类型的字段。
  STRUCT<col_name : data_type [COMMENT col_comment], ...> //表示一个结构体,其中col_name是字段名,data_type是字段的数据类型,col_comment是字段的注释(可选)

union_type-联合类型

union_type
   : UNIONTYPE < data_type, data_type, ... >  -- (Note: Available in Hive 0.7.0 and later)
  • 15
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值