认识Hive
Hive是大数据开发、分析领域无法绕开的一个话题。我将分认识Hive、快速部署、快速入门等几个模块为同学们详细地介绍Hive,期望可以为刚刚接触大数据领域的同学们建立一个初步的认知。
Hive 是什么
Hive,又称Apache Hive,由 Facebook 开源用于解决海量结构化日志的数据统计工具。
Hive是基于Apache Hadoop的一个数据仓库工具,用来进行数据提取、转化、加载,这是一种可以存储、查询和分析存储在Hadoop中的大规模数据的机制。
Hive可以将结构化的数据文件映射为一张表,并定义了简单的类 SQL 查询语言,称为 HQL ,它允许熟悉 SQL 的用户查询数据。
hive的中文意思为蜂巢,所以Hive的Logo像一只蜜蜂也是很贴合了。
为什么要用Hive
现如今,有相当多的企业在使用Hive搭建公司的数据仓库,那么对于刚接触大数据领域的同学们不妨了解一下Hive,可以加深自己对数据仓库的理解,同时增加自身的技术能力。
Hive有哪些优势:
- 有类似于SQL语句的HQL,学习简单易上手
- 不再需要写MapReduce,大大减少了使用者的学习成本
- 多用于处理海量的离线数据
- 支持使用者自定义函数,可以根据自己的需求来实现自己的函数
说了Hive的优势,也提一下Hive不足的地方。Hive查询数据的延迟比较高,所以对实时性要求比较高的场景就不适用。同时,对于查询小数据量的场景也无法体现出Hive的优势。
Hive支持的文件格式
- Text File
TEXTFILE 即正常的文本格式,是Hive默认文件存储格式。默认每一行就是一条记录,可以指定任意的分隔符进行字段间的分割。但这个格式无压缩,需要的存储空间很大。
- ORC Files
一种列式文件存储格式,具有很高的压缩比,可以很大程度的节省存储和计算资源,但它在读写时候需要消耗额外的CPU资源来压缩和解压缩。
- Parquet
Parquet仅仅是一种存储格式,它是语言、平台无关的,并且不需要和任何一种数据处理框架绑定。这也是parquet相较于orc的仅有优势,支持嵌套结构。但是Parquet不支持update操作(数据写成后不可修改),不支持ACID等
- RCFile
Record Columnar的缩写,是一种行列存储相结合的存储方式,还是Hadoop中第一个列文件格式。能够很好的压缩和快速的查询。通常写操作比较慢。
- SequenceFile
SequenceFile是Hadoop API 提供的一种二进制文件,它将数据以<key,value>的形式序列化到文件中。SequenceFile支持三种压缩选择:NONE, RECORD, BLOCK。Record压缩率低,一般建议使用BLOCK压缩。
- Avro Files Avro是一种用于支持数据密集型的二进制文件格式,它的文件格式更为紧凑。读取大量数据时,Avro能够提供更好的序列化和反序列化性能。
Text File、 RCFile、 ORC、 Parquet为Hive最常用的四大存储格式。
耗时比较
ORCFile存储文件读操作效率最高。
ORC < Parquet < RCFile < TextFile
压缩效率比较
ORCFile存储文件占用空间少。
ORC < Parquet < RCFile < TextFile
进阶
本文介绍了Hive,还介绍了Hive支持的文件格式。Hive中常用的四个存储格式在其它大数据相关的产品中也会使用,建议同学们可以通过本系列教程开始认识并使用。如果想要进一步学习Hive,可以关注:遇码,回复hive,获取官方文档。