使用数据压缩
使用 Hive 在不同数据源之间复制数据时,可以请求动态数据压缩。Hive 提供多个压缩编解码器。可以在 Hive 会话期间选择一个。执行此操作时,数据将以指定的格式进行压缩。
下面的示例使用 Lempel-Ziv-Oberhumer (LZO) 算法压缩数据。
SET hive.exec.compress.output=true; SET io.seqfile.compression.type=BLOCK; SET mapred.output.compression.codec = com.hadoop.compression.lzo.LzopCodec; CREATE EXTERNAL TABLE
lzo_compression_table
(line STRING) ROW FORMAT DELIMITED FIELDS TERMINATED BY '\t' LINES TERMINATED BY '\n' LOCATION 's3://bucketname/path/subpath/
'; INSERT OVERWRITE TABLElzo_compression_table
SELECT * FROMhiveTableName
;
Amazon S3 中的生成文件将具有系统生成的名称,末尾为 .lzo
(如 8d436957-57ba-4af7-840c-96c2fc7bb6f5-000000.lzo
)。
可用的压缩编解码器包括:
-
org.apache.hadoop.io.compress.GzipCodec
-
org.apache.hadoop.io.compress.DefaultCodec
-
com.hadoop.compression.lzo.LzoCodec
-
com.hadoop.compression.lzo.LzopCodec
-
org.apache.hadoop.io.compress.BZip2Codec
-
org.apache.hadoop.io.compress.SnappyCodec