hadoop—文件大小似乎比配置单元中的正常大小大

au9on6nz  于 2021-06-01  发布在  Hadoop
关注(0)|答案(0)|浏览(265)

我正在使用maprr沙盒测试hive和maprfs中的不同设置。我在maprfs上有两个阶段。第一阶段由一个文件夹组成,该文件夹以avrocontainer格式存储一个表。avro头仅包含指向外部存储的.avsc文件(avro方案)的链接。这些avro文件是由flume创建的。在那里,我在hive中基于avro文件创建了一个外部表。
然后,我创建了一个Parquet地板和一个兽人table作为第二阶段,使用相同的方案,方法如下:

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应该有最坏的压缩。这三种文件格式都使用snappy压缩编解码器。
这是三种情况下的结果表方案的外观:

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个文件)
Parquet桌:1.84gb(由hive serde生成6个文件)
理论上讲,兽人应该比avro少消耗约2倍的空间,那么在我的情况下,怎么可能正好相反呢?我错过什么了吗?

暂无答案!

目前还没有任何答案,快来回答吧!

相关问题