我正在尝试读取内容如下所示的日志文件:
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);
但这会扼杀第三个领域的信息,我认为这在以后可能会有用。
转储消息;
<snip>
(2013-03-28T12:19:03.639648-05:00,host1,rpcbind:)
(2013-03-28T12:20:33.158823-05:00,host2,rpcbind:)
</snip>
有没有更好的方法来读取这个不需要昂贵的正则表达式或 UDF 加载器的日志文件?Pig中应该有一些东西可能会在第二个空格之后说停止?也许不吧。
更新:只是为了修改我想要的:而不是
(2013-03-28T12:19:03.639648-05:00,host1,rpcbind:)
我想要:
(2013-03-28T12:19:03.639648-05:00,host1,rpcbind:rpcbind 终止信号。使用“rpcbind -w”重新启动)
本质上,我想要元组的最后一个字段中的完整日志消息。我希望这更清楚。