生データに対して豚の処理を行って、そこから何らかの構造を作成しています。
サンプルデータは次のとおりです。
Nov 1 18:23:34 dev_id=03 user_id=0123 int_ip=198.0.13.24 response_code=5
期待される出力:
(Nov 1 18:23:34, 03, 0123, 198.0.12.24, 5)
CONCAT(月、日、時間) を試み、「=」の前の情報を削除しようとしています。次のスクリプトを使用しています。
A = LOAD '----' using PigStorage('\t') as (m: chararray, d: chararray, t: chararray, devid: chararray, userid: chararray, intip: chararray, response: chararray);
B = foreach A generate CONCAT(CONCAT(CONCAT(CONCAT(mnth, ' '), day), ' '), time);
C = foreach A generate REGEX_EXTRACT(devid, '^.*=(.*)$', 1),REGEX_EXTRACT(userid, '^.*=(.*)$', 1), REGEX_EXTRACT(intip, '^.*=(.*)$', 1),REGEX_EXTRACT(response, '^.*=(.*)$', 1);
Dump B; Dump C;
出力:
(11 月 1 日 18:23:34)
(03, 0123, 198.0.12.24, 5)
私が必要とする提案:
マージ、ユニオン、および結合 (B、C) して、期待される出力を達成できますか? 共通のフィールドがないので、どうすればそれを行うことができますか。
Map-Reduce プログラムを使用して期待される出力を得るために、スクリプトまたは別の手順を最適化する他の方法はありますか。
返信をお待ちしております。ご協力をお願いいたします。