Hive相关的简介

Posted 蓝小冰

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Hive相关的简介相关的知识,希望对你有一定的参考价值。

# Hive简介

Hive是基于Hadoop的开源数据仓库工具。用于存储和处理海量结构化的数据。可以把存储在HDFS中结构的数据映射成一张表,然后通过HQL对数据进行查询,Hive不支持修改和删除(2.0版本之前,原因:存储的是海量的数据,修改,增加等对结果的影响很小,几乎可以忽略,但是修改对集群的性能消耗大)

Hive的底层存储完全依赖HDFS,计算完全依赖MapReduce。所以说Hive只是减少了代码量,提高了开发的效率,并没有对MapReduce做优化。但是Hive自身是可以通过优化来提高执行效率的!

# Hive于传统的数据库对比有哪些异同?


传统数据库对表的验证是:schema on write(写时模式),而Hive在load时不检查数据时候符合schema,Hive遵循schema on read(读时模式),只有在读数据的时候Hive才会检查、解析具体的数据字段、schema。读时模式的优势load data非常迅速,因为它不需要读取数据进行解析,仅仅进行文件的复制或者移动。写时模式的优势是提升了查询性能,因为预先解析之后可以对列建立索引,并压缩,但这样也会花费更多的加载时间。即使是内部表在数据加载时也不解析数据格式,如果有数据和模式不匹配,只能在查询时出现null才知道有不匹配的行。

# Hive的工作原理

Driver调用解释器(compiler)处理HQL字符串,这些字符串节能是DDL、DML、或者查询语句等。编译器将字符串转换为策略(plan),策略仅由元数据和HDFS组成,元数据操作只包含DDL语句,HDFS操作只包含load语句,对插入和查询而言,策略由MapReduce任务中的具有方向的有向无环图(DAG)组成,具体流程如下:

1.解析器(parser):将查询字符串转换为解析树表达式

2.语义分析器(semantic analyzer):将解析树表达式转换为基于块(block-based)的内部查询表达式,将输入表的模式(schema)信息从MetaStore中进行恢复,用这些信息验证列名,展开select * 以及类型检查(固定类型转化也包含在此检查)

3.逻辑策略生成器(logical plan generator):将内部表达式转换为逻辑策略,这些策略由逻辑操作数组成。

4.优化器(optimizer):通过逻辑策略构造多途径并以不同方式重写,优化器的功能如下:

将多个multiple join 合并成一个 multi-way join;

对join、group by 和自定义的map-reduce操作重新进行划分;

消减不必要的列;

在表扫描操作中推行使用断言(predicate);

对于已分区的表,消减不必要的分区;

在抽样(sampling)查询中消减不必要的桶;

此外,优化器还能增加局部聚合操作用于处理大分组(group aggregations)和增加在再分区操作用于处理不对称(skew)的分组聚合。

# Hive的内表外表的区别

Hive建表默认就是内表,Hive管理数据的生命周期,删除表的时候元数据和数据也一并被删除

外表就是建表的时候用关键字external修饰的表,这样的表不受Hive管理,删除表的时候只删除元数据,不删除数据。

# Hive的元数据保存方式
方式一:Derby数据库(默认) ,不支持并发访问
方式二:mysql数据库(常用),占资源较少,支持并发
方式三:MetaStoreServer, 在服务器端启动一个MetaStoreServer,客户端通过Thrift协议通过MetaStoreServer访问元数据


以上是关于Hive相关的简介的主要内容,如果未能解决你的问题,请参考以下文章

hive的高级应用

Hive的“有缘人”

Hive相关优化

Hive 之表的种类以及相关操作

删除与分区相关的hdfs文件后无法联系hive表分区

Hive与MapReduce相关排序及自定义UDF函数