文档介绍:1
2
Hive结构
Hive基础操作
目录
3
Hive的MAP/RED
3
4
山东现场实际应用
*
Hive基础
*
Hive结构图
数据存储
Hive数据以文件形式存储在HDFS的指定目录下
Hive语句生成查询计划,由MapReduce调用执行
用户接口
解析器:生成抽象语法树
语法分析器:验证查询语句
逻辑计划生成器(包括优化器):生成操作符树
查询计划生成器:转换为map-reduce任务
CLI:启动的时候,会同时启动一个 Hive 副本
Client:Hive 的客户端,用户连接至 Hive Server
WUI:通过浏览器访问 Hive
语句
转换
*
Hive基础
*
Hive元数据
表名
说明
关联键
BUCKETING_COLS
Hive表CLUSTERED BY字段信息(字段名,字段序号)
SD_ID ,INTEGER_IDX
COLUMNS_V2
Hive表字段信息(字段注释,字段名,字段类型,字段序号)
CD_ID
DBS
元数据库信息,保存HDFS中存放hive表的路径
DB_ID
PARTITION_KEYS
Hive分区表分区键
TBL_ID
SDS
所有hive表、表分区所对应的hdfs数据目录和数据格式。
SD_ID,CD_ID
SD_PARAMS
序列化反序列化信息,如行分隔符、列分隔符、NULL的表示字符等
SD_ID
SEQUENCE_TABLE
保存了hive对象的下一个可用ID
SERDES
指定ROW FORMAT SERDE的类型,即序列化时的一些参数
SERDE_PARAMS
序列化反序列化信息,如行分隔符、列分隔符、NULL的表示字符等
SERDE_ID
TABLE_PARAMS
表级属性,如是否外部表,表注释等
TBL_ID
TBLS
所有hive表的基本信息
TBL_ID,SD_ID
元数据存储在关系数据库如 mysql,derby ,oracle中
解析用户提交hive语句,对其进行解析,分解为表、字段、分区等hive对象
根据解析到的信息构建对应的表、字段、分区等对象,从SEQUENCE_TABLE中获取构建对象的最新ID,与构建对象信息(名称,类型等)一同写入到元数据表中去,成功后将SEQUENCE_TABLE中对应的最新ID+5。
*
Hive基础
*
Hive 和普通关系数据库的异同
数据存储
数据格式
数据更新
执行延迟
Hive 是建立在 Hadoop 之上的,所有 Hive 的数据都是存储在 HDFS 中的。
数据库则可以将数据保存在块设备或者本地文件系统中
Hive 中没有定义专门的数据格式,由用户指定,需要指定三个属性:列分隔符,行分隔符,以及读取文件数据的方法
数据库中,存储引擎定义了自己的数据格式。所有数据都会按照一定的组织存储
Hive 在查询数据的时候,需要扫描整个表(或分区),因此延迟较高,因此hive只有在处理大数据时才有优势
数据库在处理小数据时执行延迟较低
Hive VS RDBMS
Hive 的内容是读多写少的因此,不支持对数据的改写和删除,数据都是在加载的时候中确定好的
数据库中的数据通常是需要经常进行修改
*
Hive基础
*
Hive客户端
CLI
Load,Insert
usage: hive
-d,--define <key=value>
-e <quoted-query-string>
-f <filename>
-h <hostname> --hiveconf <property=value>
--hivevar <key=value>
-i <filename>
-S,--silent
-v,--verbose
Command
Description
quit exit
Use quit or exit to leave the interactive shell.
reset
Resets the configuration to the default values (as of Hive : see HIVE-3202).
set <key>=<value>
Sets the value of a particular configu