2012-08-01 44 views
6

如何在Hive中有效地存储数据并在Hive中存储和检索压缩数据? 目前我将它作为TextFile存储。 我正在通过Bejoy article,我发现LZO压缩对存储文件非常有用,而且它也是可拆分的。高效地将数据存储在Hive中

我有一个HiveQL Select查询生成一些输出,我将该输出存储在某处,这样我的一个Hive表(质量)就可以使用该数据,以便我可以查询该quality表。

以下是quality表,其中我通过使我用来覆盖表quality的分区加载下面的SELECT查询中的数据。

create table quality 
(id bigint, 
    total bigint, 
    error bigint 
) 
partitioned by (ds string) 
row format delimited fields terminated by '\t' 
stored as textfile 
location '/user/uname/quality' 
; 

insert overwrite table quality partition (ds='20120709') 
SELECT id , count2 , coalesce(error, cast(0 AS BIGINT)) AS count1 FROM Table1; 

所以在这里我目前把它作为一个TextFile,我应该以此为Sequence file并开始存储LZO compression format的数据?或者文本文件在这里也可以吗?从选择查询中,我将获得一些GB数据,这些数据需要每天上传到桌面质量上。

那么哪种方式最好?我是否应该将输出存储为TextFile或SequenceFile格式(LZO压缩格式),以便在查询Hive质量表时获得结果快照。查询手段更快。

更新: -

如果我存储与数据块压缩一个SequenceFile?像下面 -

set mapred.output.compress=true; 
set mapred.output.compression.type=BLOCK; 
set mapred.output.compression.codec=org.apache.hadoop.io.compress.LzoCodec; 

我需要设置一些其他的东西,以启用BLOCK压缩除了上面?而且我创建表作为SequenceFile格式

再次更新

我应该创建表这样的下面?或者需要进行一些其他更改以使用序列文件启用BLOCK压缩?

create table lipy 
(buyer_id bigint, 
    total_chkout bigint, 
    total_errpds bigint 
) 
partitioned by (dt string) 
row format delimited fields terminated by '\t' 
stored as sequencefile 
location '/apps/hdmi-technology/lipy' 
; 

回答

1

我没有用蜂巢多,但是从Hadoop和结构化数据的经验,我正从块压缩SequenceFiles最佳性能。默认情况下是行压缩,但是当存储结构化数据和行不是特别大时,它的效率不如BLOCK压缩。 打开它我用mapred.output.compression.type = BLOCK

+0

感谢alex的建议。所以如果我需要使用BLOCK压缩序列文件,那么我需要设置哪些参数?这些是我需要设置的参数? 'set mapred.output.compress = true set mapred.output.compression.type = BLOCK set mapred.output.compression.codec = org.apache.hadoop.io.compress.LzoCodec'或者其他我需要设置的东西? – ferhan 2012-08-02 17:32:23

+0

是的,我用这些3与hadoop 0.20.2版本,这就够了。 – alexeipab 2012-08-02 19:03:18

+0

感谢您的评论。我试着使用上面的3个命令,它工作正常。所以我的问题在于如果我需要查看以LzoCodec格式压缩的文件,那么我需要做的。当我尝试使用vi文件名时,我在该文件中找到了一些奇怪的字符。所以我需要解压缩该文件,然后我需要查看该文件?如果是,那么我怎样才能解压那个文件?下面是我用'ls'得到的文件名。'/ apps/hdmi-technology/b_apdpds/lip-data-quality/dt = 20120711/attempt_201207311206_10800_r_000000_0' – ferhan 2012-08-02 19:35:47