先自我介绍一下,小编浙江大学毕业,去过华为、字节跳动等大厂,目前阿里P7
深知大多数程序员,想要提升技能,往往是自己摸索成长,但自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!
因此收集整理了一份《2024年最新大数据全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友。
既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上大数据知识点,真正体系化!
由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、讲解视频,并且后续会持续更新
如果你需要这些资料,可以添加V获取:vip (备注大数据)
正文
带有描述式的行列式存储文件。将数据分组切分,一组包含很多行,每一行再按例进行存储。
orc文件结合了行式和列式存储结构的优点,在有大数据量扫描读取时,可以按行进行数据读取。如果要读取某列的数据,可以在读取行组的基础上读取指定的列,而不需要读取行组内所有数据以及一行内的所有字段数据。
1.1 orc文件的结构:
条带(stripe)
orc文件存储数据的地方
文本脚注(file footer)
包含了stripe列表,每个stripe包含的行数,以及每个列的数据类型。包含每个列的最大值,最小值,行计数,求 和等信息。
postscript
压缩参数和压缩大小相关的信息
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: 压缩块的大小,默认值(256kb)
orc.stripe.size: 写stripe,可以使用的内存缓冲池大小,默认(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。
网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。
需要这份系统化的资料的朋友,可以添加V获取:vip (备注大数据)
一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!
研究,那么很难做到真正的技术提升。
需要这份系统化的资料的朋友,可以添加V获取:vip (备注大数据)
[外链图片转存中…(img-sQrkxrGh-34)]
一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!
今天的文章 hive文件存储格式orc和parquet详解_orc文件,从入门到精通的大数据开发进阶学习笔记整理分享到此就结束了,感谢您的阅读。
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
如需转载请保留出处:https://bianchenghao.cn/bian-cheng-ji-chu/100378.html