我正在使用maprR沙箱来测试配置单元和MaprF中的不同设置。 我基本上在MaprF上有两个阶段。第一阶段包括一个文件夹,该文件夹以AvroContainer格式存储单个表。 avro标头仅包含指向外部存储的.avsc文件(avro方案)的链接。这些avro文件是由flume创建的。从那里,我基于这些avro文件在蜂巢中创建了一个外部表。
然后,我以相同的方式通过以下方式创建了一个镶木地板和一个兽人桌子作为第二阶段:
CREATE EXTERNAL TABLE prc_cpn_orc
LIKE stg_cpn
STORED AS ORC
LOCATION 'hdfs:////environments/icm/data/prc/public/cpn/orc'
TBLPROPERTIES ( "orc.compress"="snappy" );
CREATE EXTERNAL TABLE prc_cpn_prq
LIKE stg_cpn
STORED AS PARQUET
LOCATION 'hdfs:////environments/icm/data/prc/public/cpn/prq'
TBLPROPERTIES ( "parquet.compress"="snappy" );
创建表后,我从avro表中插入了数据:
INSERT INTO TABLE prc_cpn_orc
SELECT * FROM stg_cpn;
INSERT INTO TABLE prc_cpn_prq
SELECT * FROM stg_cpn;
现在出现了令人困惑的部分,avro表比其他两个表小得多。读完所有文章之后,avro的压缩效果应该最差。这三种文件格式均使用此处的压缩压缩编解码器。
这是所有三个表的最终结果:
1 cpn_id int
2 cmpgn_id int
3 cstmr_id int
4 cpn_barcode int
5 cpn_text string
6 cpn_address string
7 cpn_phone string
8 cpn_timezone string
9 cpn_partner string
10 cpn_created_at string
每个表包含1600万行。
结果:
从理论上讲,ORC所消耗的空间应比avro少2倍左右,那么在我的情况下又如何呢?我错过了什么吗?