入力ソースを識別するために、入力データのロード中に -tagsource オプションを使用しています。後で、入力タプルから選択したフィールドのみを投影するときに、いくつかの仮定があり、無視しようとしても特定のフィールドが常に投影されるようです。
私のスクリプトを見てください。
rawdata = load 'data/201212*' using PigStorage(' ', '-tagsource') as (filename:chararray, ts: int, ip: chararray, domain: chararray, answer: chararray);
A = foreach rawdata generate ts, ip, domain, answer, CONCAT(CONCAT(filename, '_'), UPPER(SUBSTRING(domain, 0, 1))) as domain_index, filename as filename;
B = foreach A ip を ip として生成し、SUBSTRING(domain, 0, 1) を domain_first_char, filename として生成します。
ダンプA;
B をダンプします。
B を図解してください。
B の作成中に、A から選択したフィールドのみを含めようとしています。ただし、B をダンプすると、「ts」フィールド (A の最初のフィールド) が B に表示され続けます。
A のダンプ:
(100,123.98.11.123,google.com,{(google)},20121201_G,20121201)
(95,500.98.11.123,yahoo.com,{(yahoo)},20121201_Y,20121201)
(107,123.98.11.123,google.com,{(google)},20121201_G,20121201)
(156,123.98.11.123,cnn.com,{(cnn)},20121201_C,20121201)
B のダンプ:
(100,g,20121201)
(95,y,20121201)
(107,g,20121201)
(156,c,20121201)
イラスト B:
ビ | ip:文字配列 | domain_first_char:文字配列 | ファイル名:文字配列
| | 123.98.11.123 | グラム | 20121202
ダンプ B に見られるように、(図 B のように) 最初のフィールドとして ip 値を出力する代わりに、ts フィールドを出力します。