先介绍下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提升了不少。

转载于:https://www.cnblogs.com/bigdatafly/articles/5037807.html

HIVE存储(四)ORCFile相关推荐

  1. 大数据基础之Hive(四)—— 常用函数和压缩存储

    作者:duktig 博客:https://duktig.cn (文章首发) 优秀还努力.愿你付出甘之如饴,所得归于欢喜. 更多文章参看github知识库:https://github.com/dukt ...

  2. hive的四种文件存储格式

    hive分为四种存储格式: 1.TEXTFILE 2.SEQUENCEFILE 3.RCFILE 4.ORCFILE 在其中textfile为默认格式,如果在创建hive表不提及,会默认启动textf ...

  3. HIVE的安装配置、mysql的安装、hive创建表、创建分区、修改表等内容、hive beeline使用、HIVE的四种数据导入方式、使用Java代码执行hive的sql命令

    1.上传tar包 这里我上传的是apache-hive-1.2.1-bin.tar.gz 2.解压 mkdir -p /home/tuzq/software/hive/ tar -zxvf apach ...

  4. hive存储处理器(StorageHandlers)以及存储格式以及hive与hbase整合

    一 存储处理器介绍 通过HIVE存储处理器,不但可以让hive基于hbase实现,还可以支持cassandra JDBC MongoDB 以及 Google Spreadsheets HIVE存储器的 ...

  5. CC00023.hadoop——|HadoopHive.V23|——|Hive.v23|Hive存储机制之行列存储及TextFile.v01|

    一.数据存储格式 ~~~ [Hive存储机制之行列存储及TextFile] ~~~ [Hive存储机制ORC] ~~~ [Hive存储机制之Parquet] ~~~ [Hive元数据之文件格式对比] ...

  6. 2021年大数据Hive(四):Hive查询语法

    全网最详细的Hive文章系列,强烈建议收藏加关注! 后面更新文章都会列出历史文章目录,帮助大家回顾知识重点. 目录 系列历史文章 前言 hive查询语法 一.SELECT语句 1.语句结构 2.全表查 ...

  7. Hive(四)——数据操作

    Hive(四)--数据操作 向管理表装载数据,指定路径应该是一个目录而非文件(load本地文件不会抛异常,hdfs则不可) # 装载本地文件的数据使用local关键字,装载hdfs数据去掉local关 ...

  8. Drill下配置Hive存储插件

    安装好Drill.Hive.Hadoop,且Hive以MySQL作为元数据库 启动hive metastore 必须先启动hive metastore,否则无法添加存储插件 a@DataServer: ...

  9. Hive的四种存储方式Stored as ?

  10. 学习笔记Hive(四) —— Hive应用(2)—— Hive导入及导出数据

    四.Hive导入及导出数据 通过HDFS直接导入导出 通过Hive命令导入导出 4.1.Hive导入数据的语法 LOAD DATA [LOCAL] INPATH 'filepath' [OVERWRI ...

最新文章

  1. 美国国防部作战指挥系统桌面虚拟化案例视频(中文配音版)
  2. C语言经典例67-数组最大值与最小值与数组元素交换
  3. 将在2021年改变商业格局的10项技术
  4. 半导体对物联网之水与鱼的关系
  5. linux CMA使用机制分析--基于SigmaStar SSD202
  6. 在没有XML的情况下测试Spring和Hibernate
  7. abp mysql .net core_ABP .Net Core Entity Framework迁移使用MySql数据库
  8. 大小文件服务器区别,在提供静态包时,观察到Nginx和Express服务器之间文件大小的差异...
  9. 【python】for..range练习 与函数的练习题
  10. 剑指OFFER之包含min函数的栈(九度OJ1522)
  11. Spring MVC与Struts2对比
  12. 2019银保监计算机类真题,2019中国银保监会招聘考试全真模拟卷(计算机类)
  13. 点餐系统-----数据库设计
  14. nxn次方求和函数_算法|小学生都能看懂的生成函数入门教程
  15. ACRUSH 楼教主的回忆录
  16. leetcode_714. 买卖股票的最佳时机含手续费
  17. 自然科学计算机技术ppt,[自然科学]图像处理.ppt
  18. SAT句子填空题10个示例及答案解析
  19. wicket学习笔记(2):简单登陆页面的创建
  20. onlyoffice document server实时文档协作的部署与开发细节

热门文章

  1. linux增加虚拟内存
  2. map和unordered_map
  3. iterator总结(未完)
  4. gcc/g++ 编译、链接与常用命令工具(1)
  5. 如何求matlab的in(2.0375),东南大学Matlab作业1.doc
  6. php上传图片插件下载,原生js图片文件上传插件
  7. MAC VSCode Go代码第一次运行配置
  8. springboot starter的一个问题
  9. 面试题--------10、索引是什么,有什么作用和优缺点
  10. python 键盘输入一个整数、输出它的千位与百位_Python编程习题