0

私の質問は、Hadoop の Pig 正規表現関数に関連しています。特に、これらの関数を使用して単純なログ行を解析できるかどうかを調べたいと思います。Streams または Java 関数を使用して目的の出力を取得できるという事実を認識しているため、Pig Latin のみを使用して回答してください。

私の懸念を実証するために、ログ ファイル log.txt というファイルを使用します。これには 1 行のテキストしか含まれておらず、次のコマンドを使用してアップロードされました。

data = LOAD 'farzan/log.txt' USING TextLoader() AS (line:chararray);

そこに含まれる行はダンプ データです。

(Jul 17 10:59:59 domain.domain2.company.com <2012-07-17 10:59:59.605 UTC>:[133338908]:<MDS-CS_MDS2>:<DEBUG>:<LAYER = ABC, DEVICEPIN = 25e54h40, GMETAG = 1358096454, TAG = 80, METHOD = writeDisplayImageUpdate, RESULT = 0, SIZE = 30416, DETAIL = OUTGOING>)

SPLIT ITEMS SEPARATION ISSUE 正規表現を使用してデータを分割しましょう

data_split = FOREACH data GENERATE STRSPLIT(line, ' <|[\\]>]:[\\[<]');

ダンプ data_split;

((Jul 17 10:59:59 domain.domain2.company.com,2012-07-17 10:59:59.605 UTC,133338908,MDS-CS_MDS2,DEBUG,LAYER = ABC, DEVICEPIN = 25e54h40, GMETAG = 1358096454, TAG = 80, METHOD = writeDisplayImageUpdate, RESULT = 0, SIZE = 30416, DETAIL = OUTGOING>))

結果は正しいですが、各要素をどのように分離するのですか?

4

1 に答える 1

0

フラット化を使用:

data_split = FOREACH data GENERATE FLATTEN(STRSPLIT(line, ' <|[\\]>]:[\\[<]'));
于 2012-07-25T00:07:31.327 に答える