【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调优的作用:在保证业务结果不变的前提下,降低资源的使用量,减少任务的执行时间。 阅读详情

相关推荐

Windows 下安装 Hermes Agent 完整教程(含踩坑记录)

不支持原生 Windows,必须通过 WSL2 (Windows Subsystem for Linux 2) 运行。WSL2 是 Windows 内置的 Linux 兼容层,可以在 Windows 上运行完整的 Linux 环境。

weixin_50191542的博客 4276

Hive表的存储格式

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

weixin_46292457的博客 2763

解放双手!利用海康VM全局脚本+通讯管理打造自动化视觉控制系统

本文深入探讨了如何利用海康VisionMaster(VM)的全局脚本和通讯管理功能,打造高效自动化视觉控制系统。通过全局变量实现数据共享与动态调整,结合多协议通讯管理,提升系统响应速度与智能化水平,适用于工业4.0环境下的复杂视觉检测与决策场景。

weixin_28720573的博客 424

Hive 存储格式详解

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

qq_34125999的博客 1231

数理统计四大分布---正态分布、卡方分布、学生t分布和F分布

在统计学上,我们会遇到一些常见的分布,除了正态分布外,,如t检验对应的t分布,检验对应的分布,方差分析对应的F分布等。这些分布是统计学的基础,在假设检验、方差分析等领域都起着至关重要的作用。在此,我们对这四种分布做详细的介绍,并附上MATLAB代码。 四种分布的讲解摘自MATLAB 2016的统计学和机器学习工具箱,有兴趣的可以去查看英文原版。 另外,为了方便,上传文档为图片格式,可能有些模糊...

suncangan的博客 5万+

Cursor概述及环境配置

Cursor 是一款基于 AI 的代码编辑器,支持 VS Code 配置迁移和 Java 开发环境配置。主要功能分为 Cursor Settings(AI 相关设置)和 Editor Settings(基础编辑器设置)。用户可通过一键导入或手动方式迁移 VS Code 配置,配置包括主题、扩展和快捷键等。对于 Java 开发,需配置 JDK 和 Maven 路径,并安装 Java 扩展插件以获得完整开发体验,如代码补全、调试和 Maven 项目管理。此外,Cursor 支持汉化配置,用户可安装中文语言包切换

Knight 3551

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

【详细】芯片设计全流程(包括每个流程需要用到的工具以及需要参与的工作人员)

一颗芯片的诞生经历了设计、制造和测试(分别对应集成电路产业链的设计业、制造业和封测业),而每一步都包含了复杂的步骤和流程。 图0-1 集成电路产业链 现在,我们重点介绍芯片设计的全流程以及每个流程需要用到的设计工具和需要参与的工作人员。 一、IC设计分类 首先对IC设计的分类做个介绍,如图1-1所示。 图1-1 IC设计分类 如图1-1所示,IC设计可以粗分为数字IC设计和射频/模拟IC设计,数字IC设计又可分为ASIC设计和FPGA/CPLD设计,此外还有一部分IC设计.

qq_36045093的博客 8万+

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

hive orc parquet

a123op2346的博客 4867

Python 爬虫 + 数据分析:社会调查数据抓取与结果可视化分析

在当今数字化时代,数据已成为推动社会发展的关键资源之一。无论是市场调研、学术研究还是政策制定,社会调查数据都扮演着至关重要的角色。通过 Python 爬虫技术,我们可以高效地获取这些数据,并结合数据分析与可视化工具,深入挖掘数据背后的价值。本文将通过一个完整的实战项目,带你掌握如何使用 Python 爬虫抓取社会调查数据,并进行可视化分析。

yansideyucsdn的博客 126

Python爬虫实战:实时爬取东方财富网股票行情

东方财富网实时行情(价格、涨跌幅、成交量等)K线图、分时图、技术指标市盈率、换手率、总市值等指标相比某些收费API,东方财富网页端接口不需要登录、免费、响应快、封装清晰,适合爬虫实践。东方财富网股票数据接口分析实时数据抓取与字段提取数据结构化处理自动化批量抓取多线程加速采集数据可视化展示支持存储为CSV/Excel/数据库。

2201_76125261的博客 1万+

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

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

weixin_42314711的博客 1848

Python爬虫实战:深度解析B站弹幕异步采集技术与数据可视化

title=f"弹幕词云 Top 100 (BV: {bvid})", title_textstyle_opts=opts.TextStyleOpts(font_size=23).add(series_name="弹幕词云", data_pair=list(top_100_words.items()), word_size_range=[20, 100]).add_xaxis([f"{i}-{i+1}分" for i in range(len(time_distribution))])

2201_76125261的博客 640

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

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

weixin_29847829的博客 1070

迈瑞BS系列全自动生化分析仪LIS协议接口手册(内含HL7和ASTM)

迈瑞BS系列全自动生化分析仪LIS协议接口手册,内含HL7和ASTM)

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

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万+

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

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

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

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、付费专栏及课程。

余额充值