次の形式のデータがあります。
isotimestamp source service info serviceid msg hostname requsetid
2013-08-22T13:23:18.226220+01:00 indiana service2q info 255 " processing
request " host1 e2cerd22
UDF で ISO タイムスタンプを日時に変換できました。メッセージはスペースで区切られ、メッセージの長さは一定ではありません。pig-storage('')
(メッセージ ビットがスペースで区切られているため)データをロードしようとすると、メッセージの次のビットが他の列データとして取得されます。
上記の例で、ホスト名を生成すると、メッセージのリクエスト ビットが表示されます。Pig で MAP などのデータを処理する特定の方法はありますか? 使用しようとしましTO-MAP
たが、必要なマップ変換を達成できませんでした。
tomapdata = FOREACH data GENERATE myudf.test(dt)as date,
TOMAP(source,service,info,serviceid,msg,hostname,requestid)as m;
getdata = FOREACH tomapdata GENERATE dt, m#hostname, m#serviceid;
chararray
データの残りの部分を地図としてロードすることはできますか?
load 'data.log' as (dt:chararray , m:MAP[chararray] );
Foreach data generate m#source ;
質問:
pig で MAP としてデータをロードする際に私を案内してくれる人はいますか?
Pig で MAP としてデータをロード/処理することについて、だれかが提案できますか?
**必要な地図:
source#indiana
service#service2q
msg#"processing request"
hostname#host1
requestid#ec2cerd22**