蜂巢中档案大小似乎比正常大

时间:2018-11-30 11:39:26

标签: hadoop hive avro parquet orc

我正在使用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万行。

结果:

  • JSON输入文件夹大小:3.42GB(用于Flume的输入)
  • Avro表:791.75MB(Flume SerDe生成700个文件)
  • ORC表:1.17GB(Hive SerDe生成6个文件)
  • 镶木表:1.84GB(Hive SerDe生成6个文件)

从理论上讲,ORC所消耗的空间应比avro少2倍左右,那么在我的情况下又如何呢?我错过了什么吗?

0 个答案:

没有答案