【Hive】hive表的文件存储格式

Hive之文件格式 Hive支持的存储数的格式主要有:TEXTFILE(默认格式) 、SEQUENCEFILE、RCFILE、ORCFILE、PARQUET。 textfile为默认格式,建表时没有指定文件格式,则使用TEXTFILE,导入数据时会直接把数据文件拷贝到hdfs上不进行处理; sequencefile,rcfile,orcfile格式的表不能直接从本地文件导入数据,数据要先导入到textfile格式的表中, 然后再从表中用insert导入sequencefile、rcfile、orcfile表中。 行存储与列 阅读详情

在Hive中,文件的存储格式主要有:TEXTFILE、SEQUENCEFILE、ORC、PARQUET。
其中,TEXTFILE、SEQUENCEFILE是基于行存储,ORC、PARQUET基于列存储。

1. 行存储和列存储

在这里插入图片描述
上图中左边为逻辑表,右上为行存储,右下为列存储。
当查询结果为一整行的时候,行存储效率会高一些;当查询表中某几列时,列存储的效率会更高。
在对数据的压缩方面,列存储比行存储更有优势,所以列存储占用空间相对小一些。

2. TEXTFILE

TEXTFILE是Hive的默认存储格式,数据不做压缩,磁盘开销大。实际生产中很少用TEXTFILE存储。

3. ORC

ORC(Optimized Row Columnar)从Hive0.11.0开始出现,提高了Hive在写入、读取、计算数据时的性能。ORC文件默认使用ZLIB压缩。
ORC文件由stripe、file footer、postscript三部分组成:
在这里插入图片描述

3.1 Stripe

一个ORC文件,可以包含多个Stripe,Stripe默认大小250M。
Stripe由Index Data、Row Data、Stripe Footer三部分组成。
(1)Index Data
轻量级索引,默认每隔1w行做一个索引,目的是记录某行的各个字段在Row Data中的偏移量。
(2)Row Data
真正存储数据的部分,对每个列进行编码存储。
(3)Stripe Footer
存储stripe的元数据信息。

3.2 File Footer

每个ORC文件中存有一个file footer,里面记录了各个stripe存储的行数,每个列的数据类型等信息。

3.3 Postscript

Postscript在ORC文件的尾部,记录了整个文件的压缩类型、File Footer的长度信息等。ORC文件是从后往前读的,先读取Postscript,获取File Footer的信息,再从File Footer里读取Stripe的信息,最后定位到需要读取的数据。

Hive中可以采用如下三种方式使数据存储到ORC文件中:

(1) CREATE TABLE ... STORED AS ORC
(2) ALTER TABLE ... [PARTITION partition_spec] SET FILEFORMAT ORC
(3) SET hive.default.fileformat=Orc

Hive 0.14.0版本后还可以使用CONCATENATE命令合并ORC文件:

ALTER TABLE table_name [PARTITION partition_spec] CONCATENATE
4. PARQUET

Parquet是面向分析型系统的列式存储格式,由Twitter和Cloudera合作开发,2015年5月成为Apache的顶级项目。
Parquet文件是以二进制格式存储的,所以不能直接读取。
通常情况下,Parquet文件在存储时会按照Block大小设置行组(Row Group)的大小,这样Parquet文件就可以被多个mapper处理,增加了任务的并行度。
Parquet文件格式如下图所示:
在这里插入图片描述
一个Parquet文件中可以存储多个行组,文件的首位都是该文件的Magic Number,用于校验它是否是一个Parquet文件。
Footer length记录了文件元数据的大小,通过该值和文件长度可以计算出元数据的偏移量,文件的元数据中包括每一个行组的元数据信息和该文件存储数据的Schema信息。
除了文件中每一个行组的元数据,每一页的开始都会存储该页的元数据,在Parquet中,有三种类型的页:数据页、字典页和索引页。
数据页:用于存储当前行组中该列的值;
字典页:存储该列值的编码字典,每一个列块中最多包含一个字典页;
索引页:用来存储当前行组下该列的索引,目前Parquet中还不支持索引页。
由于Parquet在Hive 0.10 - 0.12中以插件形式存在,Hive 0.13及以后版本才得以集成,所以建表语句有所不同。
Hive 0.10 - 0.12:

CREATE TABLE parquet_test (
 id int,
 str string,
 mp MAP<STRING,STRING>,
 lst ARRAY<STRING>,
 strct STRUCT<A:STRING,B:STRING>) 
PARTITIONED BY (part string)
ROW FORMAT SERDE 'parquet.hive.serde.ParquetHiveSerDe'
 STORED AS
 INPUTFORMAT 'parquet.hive.DeprecatedParquetInputFormat'
 OUTPUTFORMAT 'parquet.hive.DeprecatedParquetOutputFormat';

Hive 0.13+:

CREATE TABLE parquet_test (
 id int,
 str string,
 mp MAP<STRING,STRING>,
 lst ARRAY<STRING>,
 strct STRUCT<A:STRING,B:STRING>) 
PARTITIONED BY (part string)
STORED AS PARQUET;
总结

Hive支持的文件格式主要有:行存储(TEXTFILE、SEQUENCEFILE) 和列存储(ORC、PARQUET);
在实际生产环境,使用ORC和PARQUET的情况比较多;

Hive调优 影响Hive效率的,主要是数据倾斜、数据冗余、Job过多、I/O过多、MR分配不合理等Hive调优的作用:在保证业务结果不变的前提下,降低资源的使用量,减少任务的执行时间。 阅读详情

相关推荐

海康威视web控件开发+vue结合做网页开发

需求:vue的项目,需要在页面展示出海康的硬盘录像机连接的摄像头的实时监控画面以及回放功能. 准备:web开发包(包含插件以及demo,在海康官网即可下载32位64位的都有.那些需要积分下载的博主良心不疼么.) 点击这里下载:链接: https://pan.baidu.com/s/12FrbycWyWWyiRJH5Yd1tPA 提取码: gam5 开始开发: 1.安装demo目录下的WebComponentsKit.exe插件(根据自己的浏览器以及系统选择32位还是64位的插件) 2.打.

u013682258的博客 8484

Hive表的存储格式

Hive表的存储格式 文件格式-概述 Hive的文件格式-TextFile TextFile 是Hive中默认的文件格式 存储形式为按行存储 工作中最常见的数据文件格式就是TextFile,几乎所有的原始数据生成都是TextFile格式,所以HIve设计时考虑到为了避免各种编码以及数据错乱的问题 选用TextFile为默认的格式 建表时不指定格式即为TextFile 导入数据时把数据文件拷贝HDFS不做任何处理 文件大小在hdfs和本地 没有什么变化 Hive的文件格式-SequenceFile

weixin_46292457的博客 2763

AI:Coze、Dify、n8n:三款低代码工具如何选?

Coze、Dify、n8n:三款低代码工具如何选?

Kant2048的博客 2806

Hive 存储格式详解

Hive支持的存储数的格式主要有:TEXTFILE(行式存储) 、SEQUENCEFILE(行式存储)、ORC(列式存储)、PARQUET(列式存储)。

qq_34125999的博客 1231

JSP期末考试复习习题及答案

以下习题是对于平时课堂小测的整理,如有错误敬请指正! 欢迎一起交流~ 预祝各位小伙伴们考试顺利! Test1 一. 单选题 – 1.(单选题)当用户请求jsp页面时,JSP引擎就会执行该页面的字节码文件响应客户的请求,执行字节码文件的结果是() A. 发送一个JSP源文件到客户端 B. 发送一个Java文件到客户端 C. 发送一个HTML页面到客户端 D. 什么都不做 – 2.(单选题)下列动态网页和静态网页的根本区别描述错误的是( D) A. 静态网页服务器端返回的HTML文件是事先存储好的 B. 动.

技术小白 2万+

全网最详细Seurat v5 流程复现(拿来即用)

本文是基于seurat v5版本的教程复现,主要依据来源于官网seurat v5建议大家有时间的话可以去官网进行详细阅读学习!本节内容在之前seurat v4的教程都很多都有提到,文章所用到的数据及代码已经给各位放在这里了,有需要自取!请点击这里哦提取码:bui1。

ZxVSaccount的博客 1万+

hive文件存储格式

在 HiveSQL 的 create table 语句中,可以使用 stored as ... 指定表的存储格式。Apache Hive 支持 Apache Hadoop 中使用的几种熟悉的文件格式,比如TextFile、SequenceFile、RCFile、 Avro、ORC、ParquetFile等。 列式存储和行式存储 TEXTFILE 和 SEQUENCEFILE 的存储格式都是基于行存储的,ORC 和 PARQUET 是基于列式存储的。 第一种:TextFile 1、存储方式:.

m0_61607827的博客 6574

【ESP32】ESP32连接JY61P并通过WIFI发送给电脑

ESP32S连接JY61P并通过WIFI把姿态数据发送给电脑1.采用Arduino IDE编译器;需要安装ESP32的开发板管理器;2.电脑接受数据是基于python的;

Doudou_Nai的博客 1131

hive文件存储格式orc和parquet详解

hive orc parquet

a123op2346的博客 4867

Arduino ESP32 Web服务器从microSD卡读取

Arduino ESP32 Web服务器从microSD卡读取 将网页内容放到SD卡中,当有客户端数据请求时,从SD卡读取信息进行发送,比起SPIFFS文件系统,更节约板上的硬件资源。 SD卡接线说明 ESP32----- SD D5(GPIO 5)-----CS D18(GPIO 18)-----SCK D19(GPIO 19)-----MISO D23()GPIO 23-----MOSI 文件放置 需要把文件放置到SD卡的根目录下。注意SD卡的格式FAT32格式。 实例代码 /*

perseverance51博客 1433

如何通过conda安装HyPhy教程

本文介绍了在Ubuntu系统上通过conda安装分子进化分析工具HyPhy的详细步骤。首先创建conda环境并指定Python 3.8版本,然后通过bioconda通道安装HyPhy软件包。安装完成后可通过conda list命令验证安装。文中还特别指出可能遇到的libcrypto.so.1.1共享库缺失错误,并提供了解决方案的参考链接。该教程配有安装过程截图,帮助用户直观了解操作流程和验证安装结果。

猿小白的博客 8261

hive 修改表的存储格式_Hive文件存储格式

列式存储和行式存储5.png上图左边为逻辑表,右边第一个为行式存储,第二个为列式存储。** 行存储的特点: **查询满足条件的一整行数据的时候,列存储则需要去每个聚集的字段找到对应的每个列的值,行存储只需要找到其中一个值,其余的值都在相邻地方,所以此时行存储查询的速度更快。** 列存储的特点: **因为每个字段的数据聚集存储,在查询只需要少数几个字段的时候,能大大减少读取的数据量;每个字段的数据类...

weixin_42314711的博客 1848

【ESP32设备通信】-LoRaWAN网关

在物联网 (IoT) 时代,连接设备和收集数据变得比以往任何时候都更加容易和重要。 LoRaWAN(远程广域网)技术已成为远程、低功耗物联网通信的强大解决方案。 在本教程中,我们将使用 ESp32 构建 LoRaWAN 网关电路,并使用 ESP32 和 BME280 传感器构建传感器节点电路。 对于这两个电路,我们将使用基于 SX1278 (Ra-02) LoRa 模块在设备之间进行无线通信。 我们还将向您展示如何将传感器数据传输到流行的物联网平台 ThingSpeak。

视觉与物联智能 1582

hive 修改表的存储格式_Hive表的文件存储格式详解和相关性能分析

hive文件存储格式和创建语句hive文件存储格式包括以下几类:1、TEXTFILE2、SEQUENCEFILE3、RCFILE4、ORCFILE(0.11以后出现)其中TEXTFILE为默认格式,建表时不指定默认为这个格式,导入数据时会直接把数据文件拷贝到hdfs上不进行处理;SEQUENCEFILE,RCFILE,ORCFILE格式的表不能直接从本地文件导入数据,数据要先导入到textfile...

weixin_29847829的博客 1070

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

Hive文件存储格式(建表stored as 的五种类型)

一、综述 1.建表规范 我们知道hive建表的完成格式如下: CREATE [EXTERNAL] TABLE [IF NOT EXISTS] table_name [(col_name data_type [COMMENT col_comment], ...)] [COMMENT table_comment] [PARTITIONED BY(col_name data_typ

清平乐的技术专栏 3万+

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

ORC文件存储格式和Hive创建ORC表

首发于: https://www.jwldata.com/archives/134.html ORC的优点 The Optimized Row Columnar (ORC) file format provides a highly efficient way to store Hive data. It was designed to overcome limitations of the other Hive file formats. Using ORC files improves performa

data2tech的博客 3348

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

hive 表存储大小_Hive中文件存储格式及大小比较测试

在hive中创建表是有如下一个语句[ROW FORMAT row_format]row_format 的类型有如下:file_format:: SEQUENCEFILE| TEXTFILE -- (Default, depending on hive.default.fileformat configuration)| RCFILE -- (Note: Available in H...

weixin_30699915的博客 976

hive对数据库及对表的操作

hive相关操作

qq_50766354的博客 1428

聊一聊Hive开发时遇到的bug

文章目录前言1.Hive的连接idea创建表启动hive遇到的问题hive的文件存储格式 前言 相信各位在刚入门的时候学习基础知识的时候,都有过一段比较迷茫是时期…我觉得学习上迷茫一段时间是好事,它可以警醒自己,让自己有一个透彻的觉悟。同时也可以鞭策自己,在自己在未来的路上,成长可期… 1.Hive的连接idea创建表 1.1创建表 驱动信息 加载驱动 建立连接 注意事项: 1 hive2...

草莓猿 1251

Hive文件存储格式

Hive文件存储格式包括以下几类: 1.TEXTFILE 2.SEQUENCEFILE 3.RCFILE 4.ORCFILE(0.11以后出现) 其中TEXTFILE是默认格式,建表是不指定默认为这个格式,导入数据时会直接把数据文件拷贝到HDFS上不进行处理。SEQUENCEFILE、RCFILE、RCFILE格式的表不能直接从本地文件导入数据,数据要先导入到TEXTFILE格式的表中,

lavimer 820

Hive

Hive中的表 1. 内部表:先在hive里建一张表,然后向这个表插入数据(用insert可以插入数据,也可以通过加载外部文件方式来插入数据),这样的表称之为hive的内部表。 2. 外部表:HDFS里已经有数据了,通过hive创建一张表来管理这个文件数据。这样的表称之为外部表。注意,hive外部表管理的是HDFS里的某一个目录下的文件数据。 1)创建外部表的命令: create external...

qq_41850601的博客 197

Hive优化以及相关参数设置

如取模结果为0的数据记录存放到一个文件,取模为1的数据存放到一个文件,取模为2的数据存放到一个文件。如果某个不平衡的job中有几个 reduce task 执行的时间要比其他的 reduce task 消耗的时间要多得多的话,那么保留的插槽就会一直空闲却无法被其他的 job 使用,直到所有的 task 都结束了才会释放。默认情况下,在进行分组聚合的时候,相同的键的数据会进入到同一个reduce中进行处理,如果分组的时候某一个值有大量的重复的数据,则会导致某一个reduce任务量会很大,从而导致数据倾斜。

ziaoming_biu的博客 3460

Hive 表

Hive 表

过河卒子Rover的博客 653

Hive编程指南-表创建、内部表、外部表

摘要:本文主要介绍了Hive创建表的一些知识,包含内部表、外部表、分区和分桶等。

Evankaka的专栏 5521

[Hive] 建表create table和加载数据load data

1. 执行查询时显示表头信息 Hive&amp;gt; set hive.cli.print.header=true; 2. 在命令行中显示当前所在的数据库 Hive&amp;gt; set hive.cli.print.current.db=true; 3. 建表 Hive&amp;gt; create table test_1(id int, name string, pid int, pric...

memory专栏 3114

hive如何退出_从0开始学大数据-Hive性能优化篇

在工作中使用hive比较多,也写了很多HiveQL。这里从三个方面对 Hive 常用的一些性能优化进行了总结。表设计层面优化利用分区表优化 分区表 是在某一个或者几个维度上对数据进行分类存储,一个分区对应一个目录。如果筛选条件里有分区字段,那么 Hive 只需要遍历对应分区目录下的文件即可,不需要遍历全局数据,使得处理的数据量大大减少,从而提高查询效率。 当一个 Hive 表的查询大多数情况下,会...

weixin_39740346的博客 570
上一篇: 【Hive】表生成(Table-Generating)函数
下一篇: 【Hive】压缩格式
卜塔
博客等级 码龄10年 135粉丝 318原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值