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;

私の質問は、Sequence File で BLOCK Compression を有効にするために必要なのはそれだけですか? または、他に何かする必要がありますか?私はこの記事Hadoopをフォローしていました

任意の提案をいただければ幸いです。

アップデート:-

すべてを a に入れ、シェルコマンドプロンプトから.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 上のファイルを見て確認することもできます。ロード後、/user/hive/warehouse/lip_data_quality/dt=20120712 という名前のディレクトリが HDFS に存在するはずです。あなたが実行する場合

hadoop fs -cat

そのフォルダー内のファイルの 1 つで、ファイルの基本情報を提供するファイルのヘッダーを確認できるはずです。

于 2012-08-04T18:10:04.023 に答える
0

ジョブを送信する前に、以下のプロパティを設定します。

  • setProperty(ジョブ、「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 に答える