RegexSerDeを使用して正規表現で Web ログを解析しようとしています。各正規表現グループをテーブル内の列と照合することで機能し、正規表現グループが空の場合、その列に null を割り当てます。
欠落しているフィールドとログ行を一致させるのに問題があります。このログには、次の 2 種類の行があります。
<134>2016-10-23T23:59:59Z cache-iad2134 fastly[502801]: 52.55.94.131 "-" "-" Sun, 23 Oct 2016 23:59:59 GMT GET /apps/events/2016/10/11/3062653/?REC_ID=3062653&id=0 200
<134>2016-10-23T23:59:59Z cache-dfw1835 fastly[502801]: 1477267199
最初のタイプの行とすべてのフィールドに一致する以下の正規表現を作成しました。
^(\\S+) (\\S+) (\\S+) (\\S+) "(\\S+)" "(\\S+)" (.*) (\\d{3})
しかし?
、最初の 4 の後のフィールドをオプションで無視するように正規表現を取得するためにいじりましたが、列を台無しにし続けました。
?
グループの数を変更せずに (デシリアライザーが咳をしないように)を追加する方法について何か提案はありますか? または、これを行う他の方法はありますか?