10

Apache Pig v0.7は、私の側で余分な労力をかけることなくgzip圧縮されたファイルを読み取ることができます。例:

MyData = LOAD '/tmp/data.csv.gz' USING PigStorage(',') AS (timestamp, user, url);

そのデータを処理してディスクに出力できます。

PerUser = GROUP MyData BY user;
UserCount = FOREACH PerUser GENERATE group AS user, COUNT(MyData) AS count;
STORE UserCount INTO '/tmp/usercount' USING PigStorage(',');

ただし、出力ファイルは圧縮されていません。

/tmp/usercount/part-r-00000

STOREコンテンツをgzip形式で出力するようにコマンドに指示する方法はありますか?理想的には、Amazon Elastic MapReduceを使用したいので、Pig0.6に適用できる回答が欲しいことに注意してください。しかし、Pigのいずれかのバージョンの解決策がある場合は、それを聞きたいと思います。

4

3 に答える 3

14

次の 2 つの方法があります。

  1. 上記のストレージで述べたように、出力ディレクトリは次のように言えます

    usercount.gz STORE UserCount INTO '/tmp/usercount.gz' USING PigStorage(',');

  2. スクリプトで圧縮方法を設定します。

    set output.compression.enabled true; set output.compression.codec org.apache.hadoop.io.compress.GzipCodec;

于 2012-11-27T10:48:25.220 に答える
10

Pig r0.8.0の場合、答えは出力パスに「.gz」(またはbzipを使用する場合は「.bz」)の拡張子を付けるだけです。

コードの最後の行は、次のように修正する必要があります。

STORE UserCount INTO '/tmp/usercount.gz' USING PigStorage(',');

あなたの例では、出力ファイルは次のようになります。

/tmp/usercount.gz/part-r-00000.gz

詳細については、https ://pig.apache.org/docs/r0.8.1/piglatin_ref2.html#PigStorageを参照してください。

于 2011-02-24T05:34:18.763 に答える