大数据培训hive数仓存储格式详解

元宇宙
• 阅读 288

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基于列存储。

行存储和列存储

大数据培训hive数仓存储格式详解

行存储的特点:查询满足条件的一整行数据时,列式存储则需要去每个聚集的字段找到对应的每列的值,行存储只需要找到其中一个值,其余的值都在相邻地方,所以此时行存储查询数据更快。

列式存储的特点:查询满足条件的一整列数据的时候,行存储则需要去每个聚集的字段找到对应的每个行的值,列存储只需要找到其中一个值,其余的值都在相邻的地方,所以此时列式查询的速度更快。另一方面,每个字段的数据类型一定是相同的,列式存储可以针对性的设计更好的压缩算法

当查询结果为一整行的时候,行存储效率会高一些;当查询表中某几列时,大数据培训列存储的效率会更高。

在对数据的压缩方面,列存储比行存储更有优势,所以列存储占用空间相对小一些。

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

点赞
收藏
评论区
推荐文章
Wesley13 Wesley13
3年前
hive(02)、数据仓库Hive的基本使用
       在上篇《hive(01)、基于hadoop集群的数据仓库Hive搭建实践(https://my.oschina.net/zss1993/blog/1602402)》一文中我们搭建了分布式的数据仓库Hive服务,本文主要是在上文的基础上结合Hadoop分布式文件系统,将结构化的数据文件映射为一张数据库表,将sql语句转换为MapRedu
Stella981 Stella981
3年前
SQL on Hadoop性能对比-Hive、Spark SQL、Impala
1三种语言、三套工具、三个架构不了解SQLonHadoop三驾马车-Hive、SparkSQL、Impala吗?听小编慢慢道来1HiveApacheHive数据仓库软件提供对存储在分布式中的大型数据集的查询和管理,它本
Stella981 Stella981
3年前
Hive Transaction 事务性 小试
  提到Hive一般都会想到,Hive是数据仓库,支持类SQL查询,有很多语法支持,可以嵌套MR,写Transform、写UDF/UDAF等,但是,不支持更新操作。所以Hive的常见也一般都是一次写入,频繁读取。从Hive0.13开始,加入了ACID的新feature,但是0.13的时候还不支持insert、update和delete操作,我也
Stella981 Stella981
3年前
Hive SQL使用过程中的奇怪现象
hive是基于Hadoop的一个数据仓库工具,用来进行数据的ETL,这是一种可以存储、查询和分析存储在Hadoop中的大规模数据的机制。hive能将结构化的数据文件映射为一张数据库表,并提供SQL查询功能。HiveSQL是一种类SQL语言,与关系型数据库所支持的SQL语法存在微小的差异。本文对比MySQL和Hive所支持的SQL语法,发现相同的SQL语句在
Easter79 Easter79
3年前
SQL on Hadoop性能对比-Hive、Spark SQL、Impala
1三种语言、三套工具、三个架构不了解SQLonHadoop三驾马车-Hive、SparkSQL、Impala吗?听小编慢慢道来1HiveApacheHive数据仓库软件提供对存储在分布式中的大型数据集的查询和管理,它本
Stella981 Stella981
3年前
Hive和SparkSQL:基于 Hadoop 的数据仓库工具
Hive前言Hive是基于Hadoop的一个数据仓库工具,可以将结构化的数据文件映射为一张数据库表,并提供完整的SQL查询功能,将类SQL语句转换为MapReduce任务执行。!image(https://oscimg.oschina.net/oscnet/3ca2e844a74c7004d3281eeec5
Stella981 Stella981
3年前
Hive 和普通关系数据库的异同
1.查询语言。由于SQL被广泛的应用在数据仓库中,因此,专门针对Hive的特性设计了类SQL的查询语言HQL。熟悉SQL开发的开发者可以很方便的使用Hive进行开发。2.数据存储位置。Hive是建立在Hadoop之上的,所有Hive的数据都是存储在HDFS(https://www.oschina.net/act
Stella981 Stella981
3年前
Hive使用必知必会系列
一、Hive的几种数据模型内部表(Table将数据保存到Hive自己的数据仓库目录中:/usr/hive/warehouse)外部表(ExternalTable相对于内部表,数据不在自己的数据仓库中,只保存数据的元信息)分区表
3A网络 3A网络
2年前
5 步教你将 MRS 数据导入 DWS
5步教你将MRS数据导入DWSMapReduce服务(MapReduceService,简称MRS)是一个基于开源Hadoop生态环境而运行的大数据集群,对外提供大容量数据的存储和分析能力,可解决用户的数据存储和处理需求。用户可以将海量业务数据,存储在MRS的分析集群,即使用Hive/Spark组件保存。Hive/Spark的数据
Hive引擎底层初探
1、什么是HiveHive是一个基于Hadoop的数据仓库工具,用于处理和分析大规模结构化数据。Hive提供了类似SQL的查询语言(HiveQL),使得熟悉SQL的用户能够查询数据。Hive将SQL查询转换为MapReduce任务,以在Hadoop集群上执
京东云开发者 京东云开发者
7个月前
Hive引擎底层初探
作者:京东物流沈世莹1、什么是HiveHive是一个基于Hadoop的数据仓库工具,用于处理和分析大规模结构化数据。Hive提供了类似SQL的查询语言(HiveQL),使得熟悉SQL的用户能够查询数据。Hive将SQL查询转换为MapReduce任务,以在