0

誰かが次の改善を提供できるかどうか疑問に思っていました。

ここで視覚的に示唆されているように、空白区切り文字の数と種類が行ごとに、さらには行内のフィールド間で異なる可能性がある空白区切りファイルに遭遇します。

whiteSpaceDelimitedFields.txt:

f11     f12 f13 ...
f22 f22  f23 ...
f32  f32    f33 ...

この空白の一般的なケースでは、動作する次の PIG コード スニペットを使用します (以下の出力に示すように)。

grunt> A = LOAD 'whiteSpaceDelimitedFields.txt' USING TextLoader() AS (line:chararray);
grunt> B = FOREACH A GENERATE FLATTEN(STRSPLIT(line, '\\s+')) AS (f0:type, f1:type, ...);
grunt> DUMP B;

(f11,f12,f13)
(f22,f22,f23)
(f32,f32,f33)
grunt>

この変換は map() メソッド内で行われると思います (レコード リーダーで動的に行われるのとは対照的に、それについてはよくわかりません)。しかし、いずれにせよ、この頻繁に発生するケースに対する PIG の改善はありますか? おそらくローダーの提案?

前もって感謝します

4

1 に答える 1

2

カスタム ローダーを作成したくない場合は、Piggybank のMyRegExLoaderを参照してください。

REGISTER '/my_pig_home/contrib/piggybank/java/piggybank.jar'
A = LOAD 'data.txt' USING org.apache.pig.piggybank.storage.MyRegExLoader(
  '(\\S+)\\s+(\\S+)\\s+(\\S+)') as 
  (field1:chararray, field2:chararray, filed3:chararray);

dump A;
(f11,f12,f13)
(f22,f22,f23)
(f32,f32,f33)
于 2013-02-12T10:54:47.677 に答える