为什么 orc 文件比 Hive 中的镶木地板文件占用更多的空间



我了解,ORC文件应该比镶木地板文件更小,更压缩。但是,当我通过从镶木地板表中选择行来填充 Apache Hive 中的 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>';

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

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

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

相关内容

  • 没有找到相关文章

最新更新