Hive ORC 压缩

And*_*iev 5 compression hadoop hive cloudera snappy

我在 hive v0.12.0 中运行以下代码,我希望使用不同的方法压缩三个表,因此文件的大小和内容应该不同。

\n\n
--- Create table and compress it with ZLIB\ncreate table zzz_test_szlib\n  stored as orc\n  tblproperties ("orc.compress"="ZLIB")\n  as\nselect * from uk_pers_dev.orc_dib_trans limit 100000000;\n\n--- Create table and compress it with SNAPPY\ncreate table zzz_test_ssnap\n  stored as orc\n  tblproperties ("orc.compress"="SNAPPY")\n  as\nselect * from uk_pers_dev.orc_dib_trans limit 100000000;\n\n--- Create table and DO NOT compress it\ncreate table zzz_test_snone\n  stored as orc\n  tblproperties ("orc.compress"="NONE")\n  as\nselect * from uk_pers_dev.orc_dib_trans limit 100000000;
Run Code Online (Sandbox Code Playgroud)\n\n

当我使用描述或通过色调检查表元数据时,我得到:

\n\n
Name             Value                                            Value                                            Value\n---------------- ------------------------------------------------ ------------------------------------------------ ------------------------------------------------\ntableName        test_orc_zlib                                    test_orc_snappy                                  test_orc_none\nlocation:hdfs    /user/hive/warehouse/test_orc_zlib               /user/hive/warehouse/test_orc_snappy             /user/hive/warehouse/test_orc_none\ninputFormat      org.apache.hadoop.hive.ql.io.orc.OrcInputFormat  org.apache.hadoop.hive.ql.io.orc.OrcInputFormat  org.apache.hadoop.hive.ql.io.orc.OrcInputFormat\noutputFormat     org.apache.hadoop.hive.ql.io.orc.OrcOutputFormat org.apache.hadoop.hive.ql.io.orc.OrcOutputFormat org.apache.hadoop.hive.ql.io.orc.OrcOutputFormat\ncompressed       FALSE                                            FALSE                                            FALSE\nserializationLib org.apache.hadoop.hive.ql.io.orc.OrcSerde        org.apache.hadoop.hive.ql.io.orc.OrcSerde        org.apache.hadoop.hive.ql.io.orc.OrcSerde\norc.compress     ZLIB                                             SNAPPY                                           NONE\nnumFiles         1                                                1                                                1\ntotalSize        289970088                                        289970088                                        289970088\ntableType        MANAGED_TABLE                                    MANAGED_TABLE                                    MANAGED_TABLE\n
Run Code Online (Sandbox Code Playgroud)\n\n

在元数据中,它显示compressed=FALSE,但我不知道如何更改它以及这将如何影响。

\n\n

但如果我比较 table\xe2\x80\x99s 数据,它们都是二进制相同的。

\n\n
[~]$ hadoop fs -ls /user/hive/warehouse/test_orc_*\n-rw-r--r--   3 andrey supergroup  289970088 2014-05-07 13:19 /user/hive/warehouse/test_orc_none/000000_0\n-rw-r--r--   3 andrey supergroup  289970088 2014-05-07 12:34 /user/hive/warehouse/test_orc_snappy/000000_0\n-rw-r--r--   3 andrey supergroup  289970088 2014-05-07 11:48 /user/hive/warehouse/test_orc_zlib/000000_0\n
Run Code Online (Sandbox Code Playgroud)\n\n

我尝试更改/删除这些选项,但没有什么区别:

\n\n
SET hive.exec.compress.intermediate=true;\nSET hive.exec.compress.output=true;\nSET mapred.output.compression.type=BLOCK;\n
Run Code Online (Sandbox Code Playgroud)\n\n

我还尝试使用不同的源表(存储为 TEXTFILE),没有区别。

\n\n

有什么想法或建议吗?

\n

dim*_*mah 4

我相信这是由于 0.12 中的一个已知错误造成的,
看看这个 Jira HIVE-6083