前面我们已经把生产上使用的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 |
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 |
【说明】:本文章由站长整理发布,文章内容不代表本站观点,如文中有侵权行为,请与本站客服联系(QQ:)!