1

我需要使用块压缩数据启用序列文件。下面是将存储为 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;

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

任何建议将不胜感激。

更新:-

我通过将所有内容放入 a并从 shell 命令提示符.hql file运行它来加载上表中的数据。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.
4

2 回答 2

1

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

hadoop fs -cat

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

于 2012-08-04T18:10:04.023 回答
0

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

  • setProperty(job, "mapred.output.compress", "true");
  • setProperty(job,"mapred.output.compression.type", "BLOCK");
  • setProperty(job,"mapred.output.compression.codec","org.apache.hadoop.io.compress.DefaultCodec");

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

于 2013-10-18T14:17:30.297 回答