0

ログファイルから各行を独自のフィールドに読み取る方法はありますか。('\n') を区切り文字として使用すると、それを達成できるはずだと思いました。

ファイル -テスト

Audit file /u01/app/oracle/admin/st01/adump/st011_ora_27063_1.aud
Node name:      test0041
CLIENT USER:[6] 'oracle'

だから私はこれを3つのフィールドに読みたいと思います

filename - Audit file /u01/app/oracle/admin/st01/adump/st011_ora_27063_1.aud
nodename - Node name:      test0041
username - CLIENT USER:[6] 'oracle'

これを試しましたが、役に立ちませんでした。

A = LOAD 'test' using PigStorage ('\n') AS (filename, nodename, username);
4

2 に答える 2

0

ファイルが非常に小さい場合は、たとえばLOADの前に\nを\tに変換するなど、ファイルの前処理を行ってみませんか?

于 2013-03-15T06:20:51.843 に答える
0

PigStorage の区切り文字として '\n' を使用することはできません。Pig10のドキュメントによると:

レコードの区切り文字 – ロード ステートメントの場合、Pig は、改行 ( '\n' )、キャリッジ リターン ( '\r' または CTRL-M)、および CR + LF の組み合わせ ( '\r\n' ) 文字をレコードの区切り文字として解釈します (これらの文字をフィールド区切り文字として使用します)。store ステートメントの場合、Pig は改行 ('\n') 文字をレコード区切り文字として使用します。

ログ ファイルを解析する場合は、カスタム ローダーを作成する必要があります。

于 2013-03-02T22:01:16.630 に答える