1

私はいつかPIGを使用しており、ファイルのロード中に最初の行を考慮しない方法を知りたいと思っていました. ヘッダーを持つファイルがあります。したがって、最初の行を無視して次の行に移動し、日付列とすべての処理を行う必要があります。これについてどうすればいいですか?

ありがとう

4

2 に答える 2

5

ブタのバージョン 0.11 をお持ちの場合は、これを試すことができます。

input_file = load 'input' USING PigStorage(',') as (row1:chararay, row2:chararray);

ranked = rank input_file;

NoHeader = Filter ranked by (rank_input_file > 1);

New_input_file = foreach NoHeader generate row1, row2;

New_input_file には、ヘッダーのないデータが含まれている必要があります。ランク演算子は pig 0.11 の新機能であるため、以前のバージョンでは機能しないことに注意してください。

編集:このソリューションは単一のファイルでのみ機能することに注意してください。代わりにディレクトリをロードしている場合は、代わりに何か他のものを試してください。

于 2013-10-01T12:48:06.283 に答える
2

1つのファイルをロードするだけであれば、指定されたソリューションはうまく機能します。ただし、ディレクトリ内のすべてのファイルをロードする場合 (入力がディレクトリ パスであることを確認するだけでも可能です)、指定されたソリューションは最初のファイルの先頭のみを切り捨てます。

各ファイルのヘッダーを削除するには、おそらくCSVExcelStorageを使用することをお勧めします

my_input = load 'inputfileordir' USING CSVExcelStorage(',', 'default', 'NOCHANGE', 'SKIP_INPUT_HEADER')
于 2015-12-28T13:12:09.507 に答える