为什么兽人文件比Hive中的Parquet文件占用更多的空间?

6gpjuf90  于 2021-05-29  发布在  Hadoop
关注(0)|答案(1)|浏览(398)

据我所知,orc文件应该比Parquet文件更小,更压缩。但是,当我在apache配置单元中通过从parquet表中选择行来填充orc表时,orc表最终消耗的磁盘空间是原来的7倍。
你知道为什么会这样吗?我的表模式如下。它包含一个长度为200000的整数数组0、1和2,每个分区大约有10000行。

CREATE TABLE orc_table (
  field1 STRING
, field2 INT
, field3 STRING
, field4 STRING
, array_field ARRAY < INT >
) PARTITIONED BY (
    partition_name STRING
);

ALTER TABLE orc_table ADD PARTITION (partition_name='<partition-name>');

ALTER TABLE orc_table PARTITION (partition_name='<partition_name>') SET FILEFORMAT ORC;

INSERT INTO TABLE orc_table PARTITION (partition_name='<partition_name>')
SELECT field1, field2, field3, field4, array_field FROM parquet_table
WHERE partition_name='<partition_name>';
pkwftd7m

pkwftd7m1#

更改这些设置解决了问题:

SET hive.exec.compress.intermediate=true;
SET hive.exec.compress.output=true;
SET mapred.output.compression.type=BLOCK;

显然,hive使用map reduce在数据格式之间进行转换。因此,还需要打开map reduce输出压缩。但这只是猜测。

相关问题