具有块压缩的序列文件

时间:2012-08-03 23:05:59

标签: hadoop mapreduce hive

我需要启用带有块压缩数据的序列文件。下面是将存储为SequenceFile的表。

create table lip_data_quality
( 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/b_apdpds/lip-data-quality'
;

在上表中,我通过启用这些命令来获取压缩表单中的数据 -

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

所以我的问题是我需要用序列文件启用BLOCK压缩吗?或者还有什么我需要做的吗?我正在关注这篇文章Hadoop

任何建议都将受到赞赏。

更新: -

我通过将所有内容放在.hql file并从shell命令提示符运行hql file来加载上表中的数据。并在运行以下hql文件时每次更改分区日期。

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

insert overwrite table lip_data_quality partition (dt='20120712') 
SELECT query here which will give the output for the above table.

2 个答案:

答案 0 :(得分:1)

那应该没问题。您还可以通过查看HDFS上的文件来验证它。加载后,HDFS中应该有一个名为/ user / hive / warehouse / lip_data_quality / dt = 20120712的目录。如果你运行

hadoop fs -cat

在该文件夹中的一个文件上,您应该能够看到文件的标题,它将为您提供有关该文件的基本信息。

答案 1 :(得分:0)

在提交作业之前设置以下属性。

  • setProperty(job," mapred.output.compress"," true");
  • setProperty(job," mapred.output.compression.type"," BLOCK");
  • 的setProperty(作业," mapred.output.compression.codec"" org.apache.hadoop.io.compress.DefaultCodec&#34);

使用DefaultCodec,可以使用org.apache.hadoop.io.compress.LzoCodec;