Orcfile文件格式解析(1)
来源:互联网 发布:自定义全局透明软件 编辑:程序博客网 时间:2024/05/10 09:39
Orcfile(Optimized Row Columnar)是hive 0.11版里引入的新的存储格式,是对之前的RCFile存储格式的优化。写这个的哥们来自于HortonWorks,代码写的很不错,比之前的rcfile强多了(据说rcfile是个中科院的童鞋跑去facebook写的,看来中国的计算机教育水平还是有限啊。。。囧,跑题了)
先介绍下Orc的文件格式,截一张官方的图:
可以看到每个Orc文件由1个或多个stripe组成,每个stripe250MB大小,这个Stripe实际相当于之前的rcfile里的RowGroup概念,不过大小由4MB->250MB,这样应该能提升顺序读的吞吐率。每个Stripe里有三部分组成,分别是Index Data,Row Data,Stripe Footer:
1,Index Data:一个轻量级的index,默认是每隔1W行做一个索引。这里做的索引应该只是记录某行的各字段在Row Data中的offset,据说还包括每个Column的max和min值,具体没细看代码。
2,Row Data:存的是具体的数据,和RCfile一样,先取部分行,然后对这些行按列进行存储。与RCfile不同的地方在于每个列进行了编码,分成多个Stream来存储,具体如何编码在下一篇解析里会讲。
3,Stripe Footer:存的是各个Stream的类型,长度等信息。
每个文件有一个File Footer,这里面存的是每个Stripe的行数,每个Column的数据类型信息等;每个文件的尾部是一个PostScript,这里面记录了整个文件的压缩类型以及FileFooter的长度信息等。在读取文件时,会seek到文件尾部读PostScript,从里面解析到File Footer长度,再读FileFooter,从里面解析到各个Stripe信息,再读各个Stripe,即从后往前读。
接下来看下ORcfile相对于RCfile做了哪些改进,从Orc作者的ppt里截了张图,分别解释下各行:
Hive type model:RCfile在底层存储时不保存类型,都当做Byte流来存储
Separtor complex columns:Orc将复杂类型拆开存储
Splits Found Quickly:不很理解
Default Column group size:不用解释了
Files per a bucket:不很理解
Store min,max,count,sum:存了这些便于快速地skip掉一个stripe
Versioned metadata:不很理解
Run-Length Data-coding:整数类型做Run-Length变长编码
Store Strings in dictionary:String类型做字典编码
Store Row Count:每个Stripe会存储行数
Skip Compressed blocks:可以直接skip掉压缩过的block
Store internal indexes:存储了一个轻量级的index
整个Orc看下来,代码写的还是比较清晰明了的,而且我们也进行了测试,压缩效果比RCfile提升了不少,有兴趣的朋友可以来看下,之后会写第二篇解析,主要是讲Orc用到的几种编码格式。
http://www.cppblog.com/whspecial/archive/2013/08/14/202544.html
- Orcfile文件格式解析(1)
- Orcfile文件格式解析(2)
- Orcfile文件格式解析
- AVI文件格式解析1
- mp4文件格式解析(一)
- mp4文件格式解析(一)
- swf文件格式解析(一)
- mp4文件格式解析(四)
- mp4文件格式解析(一)
- mp4文件格式解析(二)
- mp4文件格式解析(三)
- mp4文件格式解析(四)
- mp4文件格式解析(一)
- mp4文件格式解析(二)
- mp4文件格式解析(三)
- mp4文件格式解析(四)
- MP4文件格式解析(转载)
- mp4文件格式解析(一)
- 扑灭雅虎和谷歌之间的广告疑云
- [2778]小明的花费预算 (二分查找)SDUT
- jQuery选择器总结
- 屏住呼吸在2010年即将推出的手机
- 子类获取父类iframe中的值
- Orcfile文件格式解析(1)
- EXT+JSON请求服务
- ROW_NUMBER() OVER函数的基本用法
- ZooKeeper 节点
- calloc
- DNS负载均衡与负载均衡器两种方案的选择
- Hacker Tools
- 如何使用ZStack——获取RSSI和LQI
- 用JDBC编程的运行时错误及其解决大全