梦见你的名字 发表于 2024-7-13 16:04:19

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

压缩参数和压缩大小相干的信息
1.2 stripe布局

分为三部分:index data、rows data、stripe footer
index data:生存了地点条带的一些统计信息,以及数据在stripe中的位置索引信息
rows data:存储数据的地方,由多行组成,数据以stream(流)的情势存储
stripe footer:生存数据地点的目次
1.3 rows data数据布局

metadata stream :形貌每个行组的元数据信息
data stream:存储数据的地方
1.4 orc文件中提供了三个级别的索引

文件级别:记载文件中所有script的位置信息,以及文件中存储的每列数据的统计信息
条带级别:记载每个stripe所存储的数据统计信息
行组级别:在script中,每10000行构成一个行组,该级别的索引信息就是记载这个行组中存储的数据统计信息
1.5 效率和数据范例

通过orc文件的索引,可以快速定位要查询的数据块,规避不满足查询条件的数据块和文件,相比读取传统的数据文件,进行查找时必要遍历全部数据,使用orc可以避免磁盘和网络的I/O浪费,从而提高查询效率。提升整个集群的工作负载。
hive以orc文件格式存储时,形貌这些数据的字段信息,字段范例信息以及编码等信息都和orc中存储的数据放在一起。
orc文件都是自形貌的,不依赖外部的数据,也不存储在hive元数据库中。
数据范例:boolean,tinyint、smallint、int、bigint、float、double、string、varchar、char、binary,timestamp和date、
复杂范例:struct、list、map、union
所有范例都可以接受null值。
1.6 acid事务的支持

0.14版本之前,hive表的数据只能新增或者整块删除分区表,而不能对表进行单个记载的修改。0.14版本以后,orc文件范例可以大概确保hive在工作时的原子性、一致性、隔离性、持久性的ACID事务可以大概被正确的使用。可以对单条数据进行更新。
hive 的事务适合对大批量的数据进行更新,不适合频繁的小批量数据。
下面是创建hive事务表的方法
--(1)开启配置
----开启并发支持,支持删除和更新事务

set hive.support.concurrentcy=true;

----支持acid事务的表必须为分桶表

set hive.enforce.bucketing=true;

-----动态分区,开启事务需要开启动态分区非严格模式

set hive.exec.dynamic.partition=true;

set hive.exec.dynamic.partition.mode=nonstrict;

----所有的org.apache.hadoop.hive.sql.lockmgr.DummyTxnManager 不支持事务

set hive.txn.manager=org.apache.hadoop.hive.sql.lockmgr.DummyTxnManager

---开启在相同的一个meatore实例运行初始化和清理的线程

set hive.compactor.initiator.on=true;

--设置每个metastore实例运行的线程数

set hive.compactor.worker.threads=1

--(2)创建表
-- 必须支持分桶
create table student_txn
( id int,
name String
)cluster by (id) into 2 buckets
stored as orc
-- 表属性中添加支持事务
tblproperties('transactional' = 'true')

--(3) 插入数据,更新数据

insert into table student_txn values('1000','student\_1001');

update student_txn set name='student\_lzn' where id='1001';

1.7 orc相干的设置

orc.compress: 压缩范例,none,zlib,snappy
orc.compress.size: 压缩块的大小,默认值262114(256kb)
orc.stripe.size: 写stripe,可以使用的内存缓冲池大小,默认67108864(64mb)
orc.row.index.stride: 行组级别的索引数量大小,默认10000,必须设定为大于10000的数。
orc.create.index: 是否创还能行组级别索引,默认true
orc.bloom.filter.columns: 必要创建的布隆过滤器的组
orc.bloom.filter.fpp: 使用布隆过滤器的假正(false positive)概率,默以为0.05
hive中使用布隆过滤器可以用较少的空间判定数据是否存在表中(如果不存在,那么100%就是不存在,存在的话再去查找确认存在)。
hive表设置属性:

hive.stats.gather.num.threads: 网络统计信息的线程数,默认10。只实用于orc这类已经实现StatsProvidingReader接口的文件格式。
hive.exec.core.memory.pool: 写orc文件,可以使用的已分配堆内存的最大比例。
hive.exec.orc.default.stripe.size: 每个stripe文件,可以会用的缓冲池大小,默认64MB。
hive.exec.orc.default.block.size: 每个stripe存储文件块大小,默认256MB。
hive.exec.orc.dictionary.key.size.threshold: 阈值,默认0.8。如果字典中的键数大于所有非空数据行数的这一阈值,则关闭字典编码。
hive.exec.orc.default.row.index.stride: hive表行组级索引数量大小,默认10000。
hive.exec.orc.default.block.padding: 写orc文件时,是否填充已有的hdfs文件块,默认false。
hive.exec.orc.block.padding.tolerance: 阈值,默认0.05,允许填充到hdfs文件块的最小文件。
hive.exec.orc.default.compress: 定义orc文件压缩编码、解码器。默以为zlib。
hive.merge.orcfile.stripe.level: 默认true。这时如果hive.merge.mapfile、hive.merge.mapredfiles或者hive.merge.tezfiles也开启,在写入数据到orc文件时,将会一strip级别归并小文件。
hive.exec.orc.zerocopy: 默认false,使用零拷贝方式读取orc文件。
hive.exec.orc.skip.corrupt.data: 默认false,处理数据时,碰到异常抛出,为true,则跳过异常。
二、parquet文件

2.1 parquet的基本布局

https://img-blog.csdnimg.cn/6fc35db6729b42ac83469e728559c28f.jpeg#pic_center
表被分为多个行组,每个列块又被拆分成若干的页。
parquet存储时,会记载数据的元数据,文件级别的元数据,列块级别的元数据,页级别的元数据。
文件级别的元数据:表布局,文件记载数,文件拥有的行组数,以及行组的总量记载数,每个行组下,列块文件偏移量。
列块级别的元数据:列块压缩前后的数据大小,以及压缩编码,数据页偏移量,索引页偏移量,列块数据记载数。
页级别的元数据(页头):页的编码信息,数据记载数
parquet文件布局同样在查询时可以过滤大量的记载,但是orc对过滤做了额外的优化,相比之下,查时,orc文件会消耗更少的资源。
2.2 parquet文件设置

parquet.block.size: 默认134217728byte,128MB,表现在内存中的块大小。可以设置更大,可以提高读效率,但是写时耗费更多的内存。
parquet.page.size: 1048576byte,1MB,每个页的大小,特指压缩后的页大小,读取时先将页进行解压。页是parquet操纵的最小单位,每次读取时,必须读完一整页数据才能访问数据。设置过小会导致压缩出现性能问题。
自我先容一下,小编13年上海交大结业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里不停到现在。
深知大多数大数据工程师,想要提升技能,每每是本身探索成长或者是报班学习,但对于培训机构动则几千的学费,着实压力不小。本身不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!
因此网络整理了一份《2024年大数据全套学习资料》,初志也很简单,就是渴望可以大概资助到想自学提升又不知道该从何学起的朋友。
https://img-blog.csdnimg.cn/img_convert/80f280a3663d80aef057710b6b5bc94d.png
https://img-blog.csdnimg.cn/img_convert/13eb678a8c97b859aa4b39d220b94fa9.png
https://img-blog.csdnimg.cn/img_convert/172158801fbf891e96eebbb67fb45eda.png
https://img-blog.csdnimg.cn/img_convert/8fc414a665218a2ead0ab0447f6dddd8.png
https://img-blog.csdnimg.cn/img_convert/226e5e446dd79eaacfccb5ebb2fe516a.png
既有适合小白学习的零底子资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上大数据开发知识点,真正体系化!
由于文件比较大,这里只是将部分目次大纲截图出来,每个节点里面都包含大厂面经、学习条记、源码课本、实战项目、解说视频,并且后续会持续更新
如果你觉得这些内容对你有资助,可以添加VX:vip204888 (备注大数据获取)
https://img-blog.csdnimg.cn/img_convert/a69272c796b1610adbc5d24d74f51414.png
既有适合小白学习的零底子资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上大数据开发知识点,真正体系化!*
由于文件比较大,这里只是将部分目次大纲截图出来,每个节点里面都包含大厂面经、学习条记、源码课本、实战项目、解说视频,并且后续会持续更新
如果你觉得这些内容对你有资助,可以添加VX:vip204888 (备注大数据获取)
[外链图片转存中…(img-8inJqMbW-1712847087694)]

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
页: [1]
查看完整版本: hive文件存储格式orc和parquet详解_orc文件