欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  数据库

ORC使用效果

程序员文章站 2022-05-16 18:04:45
...

前面我们已经把生产上使用的Hive版本由0.7.0升级到0.12。Hive 0.12在存储层做了很大的改进,包括更高的压缩比以及更高的查询效率。ORCFile在hive 0.11中被引入进来,这是一个不可思议的压缩格式,下面我们来看看它到底有多神奇。首先,我们看看如何使用ORCFi

前面我们已经把生产上使用的Hive版本由0.7.0升级到0.12。Hive 0.12在存储层做了很大的改进,包括更高的压缩比以及更高的查询效率。 ORCFile在hive 0.11中被引入进来,这是一个不可思议的压缩格式,下面我们来看看它到底有多神奇。   首先,我们看看如何使用ORCFile。先建立一张以ORCFile为存储格式的表,如下:
CREATE TABLE orc_test(
...
) STORED AS orc;
把存量的数据转换成ORCFile格式存储是超级简单的,我们只需要把存量表oldtable中的数据insert overwrite到新表orc_test里面即可。
INSERT INTO TABLE orc_test SELECT * FROM oldtable;
ORCFile存储格式有几个表属性可以进一步改善效果,这些属性如下:
属性 默认值 说明
orc.compress ZLIB 列压缩格式(NONE, ZLIB, SNAPPY)
orc.compress.size 262,144 (= 256 KiB) 每一个压缩块大小
orc.stripe.size 268,435,456 (= 256 MiB) 每一个stripe大小
orc.row.index.stride 10,000 index间隔行数(必须大于10000)
orc.create.index true 是否创建内联index
  如果想修改默认的列压缩格式,例如修改为SNAPPY:
CREATE TABLE orc_test2(
...
) STORED AS orc tblproperties ("orc.compress"="SNAPPY");
  使用ORC存储格式实验效果展示。 这里使用ubs一小时的数据作为测试用例。先看看测试表的数据文件存储情况:
   63426542  pt=2014.03.02.00/00000
   64508155  pt=2014.03.02.00/00001
   65929482  pt=2014.03.02.00/00002
   63833597  pt=2014.03.02.00/00003
   ..............................
   ..............................
   63850876  pt=2014.03.02.00/00126
   62094988  pt=2014.03.02.00/00127
测试表数据一共有128个文件,每个文件60MB左右。总的数据量为8063408920B=7.5GB。 通过insert overwrite导入到上文中的orc_test表中,默认结果生成4个文件,文件大小如下:
 260485638 2014-03-03 19:15 orc_test/000000_0
 261423217 2014-03-03 19:15 orc_test/000001_0
 253876162 2014-03-03 19:15 orc_test/000002_0
  18124387 2014-03-03 19:14 orc_test/000003_0
总大小为793909404字节=757MB。 增加文件个数,使其生成16个文件,结果如下:
108734630 2014-03-03 15:19 orc_test3/000000_0
108308186 2014-03-03 15:18 orc_test3/000001_0
110069765 2014-03-03 15:18 orc_test3/000002_0
110582145 2014-03-03 15:18 orc_test3/000003_0
109460085 2014-03-03 15:18 orc_test3/000004_0
110110866 2014-03-03 15:18 orc_test3/000005_0
109337311 2014-03-03 15:18 orc_test3/000006_0
108678617 2014-03-03 15:18 orc_test3/000007_0
108587893 2014-03-03 15:18 orc_test3/000008_0
109880571 2014-03-03 15:18 orc_test3/000009_0
108456961 2014-03-03 15:18 orc_test3/000010_0
109082450 2014-03-03 15:18 orc_test3/000011_0
110406471 2014-03-03 15:18 orc_test3/000012_0
110369926 2014-03-03 15:18 orc_test3/000013_0
109480607 2014-03-03 15:18 orc_test3/000014_0
109651103 2014-03-03 15:18 orc_test/000015_0
由结果可见,每个文件大小在100MB左右,表的总大小为1751197587字节=1.63GB。 测试小结:
测试表 存储 压缩比 count(*)时间(秒)
rcfile原始表 7.5GB 100% 48
orc_test(4个文件) 757MB 10% 57
orc_test3(16个文件) 1.63GB 22% 56
由上表可见,orc存储格式对存储的压缩提升了很多,而计算效率损失不大。业务方可以根据自身的计算特点选择使用。