在蜂巢
问题描述:
指定压缩编解码器的INSERT OVERWRITE SELECT我有一个像在蜂巢
CREATE TABLE beacons
(
foo string,
bar string,
foonotbar string
)
COMMENT "Digest of daily beacons, by day"
PARTITIONED BY (day string COMMENt "In YYYY-MM-DD format");
蜂巢表填充,我做这样的事情:
SET hive.exec.compress.output=True;
SET io.seqfile.compression.type=BLOCK;
INSERT OVERWRITE TABLE beacons PARTITION (day = "2011-01-26") SELECT
someFunc(query, "foo") as foo,
someFunc(query, "bar") as bar,
otherFunc(query, "foo||bar") as foonotbar
)
FROM raw_logs
WHERE day = "2011-01-26";
这将构建一个新的分区与个人产品通过放气压缩,但理想的情况是通过LZO压缩编码解码器。
不幸的是,我不完全确定如何实现,但我认为这是许多运行时设置之一,或者可能只是CREATE TABLE DDL中的一行。
答
的INSERT OVERWRITE在前面加上以下运行时配置值之前:
SET hive.exec.compress.output=true;
SET io.seqfile.compression.type=BLOCK;
SET mapred.output.compression.codec = com.hadoop.compression.lzo.LzopCodec;
另外,还要确保你有所需的压缩编解码器通过检查:
io.compression.codecs
约io.seqfile.compression更多信息.type可以在这里找到http://wiki.apache.org/hadoop/Hive/CompressedStorage
我也许错了,但它似乎像块类型将确保更大的文件压缩比率较高,而压缩文件较小。