大数据培训 hive 数仓存储格式详解
Hive 简介
Hive 是基于 Hadoop 的一个数据仓库工具,用来进行数据提取、转化、加载。
这是一种可以存储、查询和分析存储在 Hadoop 中的大规模数据的机制。
hive 数据仓库工具能将结构化的数据文件映射为一张数据库表,并提供 SQL 查询功能,能将 SQL 语句转变成 MapReduce 任务来执行。
一、文件存储格式
在 HIVE 中,常见的文件存储格式有
1 TextFile
2 Parquet
3 ORC
4 Sequencefile
5 RC
6 AVRO
注意:TextFile、Sequencefile 基于行存储,ORC、Patquet 基于列存储。
行存储和列存储
行存储的特点:查询满足条件的一整行数据时,列式存储则需要去每个聚集的字段找到对应的每列的值,行存储只需要找到其中一个值,其余的值都在相邻地方,所以此时行存储查询数据更快。
列式存储的特点:查询满足条件的一整列数据的时候,行存储则需要去每个聚集的字段找到对应的每个行的值,列存储只需要找到其中一个值,其余的值都在相邻的地方,所以此时列式查询的速度更快。另一方面,每个字段的数据类型一定是相同的,列式存储可以针对性的设计更好的压缩算法
当查询结果为一整行的时候,行存储效率会高一些;当查询表中某几列时,大数据培训列存储的效率会更高。
在对数据的压缩方面,列存储比行存储更有优势,所以列存储占用空间相对小一些。
1.TextFile
Hive 中默认的存储文件格式,行存储。每一行都是一条记录,每行都以换行符(\n)结尾。数据不做压缩,磁盘开销大,数据解析开销大。文件拷贝至 hdfs 不进行处理。
优点:最简单的数据格式,便于和其他工具(Pig,grep,sed,awk)共享数据,便于查看和编辑;加载较快
缺点:耗费存储空间,I/O 性能较低;Hive 不进行数据切分合并,不能进行并行操作,查询效率低。
应用场景:适合于小型查询,查看具体数据内容的和测试操作。
建表是进行限定:
stored as textfile
2.sequencefile
含有键值对的二进制文件,行存储,Hadoop API 提供的一种二进制文件支持,其具有使用方便、可分割、可压缩的特点
优点:可压缩、可分割,优化磁盘利用率和 I/O;可并行操作数据,查询效率高
缺点:存储空间消耗最大;对于 Hadoop 生态系统之外的工具不适用,需要通过 text 文件转换加载
解释:text 转换加载,是指 linux 的 shell 端的 -text 命令来查看二进制数据
应用场景:适用于数据量较小,大部分列的查询。
建表是进行限定:
sorted as sequencefile
3.RC
是一种行列存储相结合的存储方式。首先,将数据按行分块,保证同一个 record 在一个快上,避免读一个记录需要读取多个 block。其次,快数据列式存储,有利于数据压缩和快速的列存储。
4.orc(工作中常用)
orc 文件代表了优化排柱状的文件格式。orc 文件格式提供了一种将数据存储在 Hive 表中的高效方法。这个文件系统实际上是为了克服其他 Hive 文件格式的限制而设计的。HIve 从大型表读取、写入和处理数据时,使用 orc 文件可以提高性能
数据按行分块 每块按列存储。
特点:压缩快,快速列存取、是 rcfile 的改良版本。
缺点:加载时性能消耗较大;需要通过 text 文件转化加载;
应用场景:适用于 Hive 中大型的存储、查询
建表是进行限定:
sorted as orc
5.parquet
parquet 类似于 orc、相对于 orc 文件格式,hadoop 生态系统中大部分工程都支持 parquet 文件。
存储模式:按列存储,Parquet 文件是以二进制方式存储的,不可以直接读取和修改,文件是自解析的,文件中包括该文件的数据和元数据。
优点:Parquet 能够很好的压缩和编码,有良好的查询性能,支持优先的模式演进。
缺点:写速度通常比较慢,不支持 update、insert,delete、ACID 等特性。
应用场景:适用于字段数非常多,无更新、只取部分列的查询。
文章来源于 robin
评论