内容が次のようなログ ファイルを読み取ろうとしています。
2013-03-28T12:19:03.639648-05:00 host1 rpcbind: rpcbind がシグナルで終了しています。「rpcbind -w」で再起動し
ます 2013-03-28T12:20:33.158823-05:00 host2 rpcbind: rpcbind がシグナルで終了します。「rpcbind -w」で再起動
次のように PigStorage スペース区切り文字を使用してみました。
cmessages = LOAD 'data.txt' USING PigStorage(' ') AS (date:chararray, host:chararray, message:chararray);
しかし、それは 3 番目のフィールドのメッセージを殺してしまいます。
cmessage をダンプします。
<snip>
(2013-03-28T12:19:03.639648-05:00,host1,rpcbind:)
(2013-03-28T12:20:33.158823-05:00,host2,rpcbind:)
</snip>
コストのかかる正規表現や UDF ローダーを必要としない、このログ ファイルを読み取るためのより良い方法はありますか? Pig には、2 番目のスペースの後に停止すると言う何かがあるはずですか? そうでないかもしれない。
更新:私が欲しいものを修正するだけです:代わりに
(2013-03-28T12:19:03.639648-05:00、ホスト 1、rpcbind:)
私は…したい:
(2013-03-28T12:19:03.639648-05:00、host1、rpcbind: rpcbind がシグナルで終了。「rpcbind -w」で再起動)
基本的に、タプルの最後のフィールドに完全なログ メッセージが必要です。それがより明確であることを願っています。