10.64.20.38 - - [22/May/2014:17:01:30 +0800] "GET /estore/images/icons/e_ico_6.png HTTP/1.1" 200 3062 "http://shadcdwapp82/estore/customerService.do" "Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.1; Trident/4.0; .NET CLR 3.5.30729)" 10.64.20.38.1400749219877329
各列之间使用空格分隔,其中有几列使用双引号表示是一列,列内数据又有空格。pig百度了下,只找到使用单个字符分隔。这个日志我感觉只能使用正则分隔,否则就得让公司调整分隔符了,求教有什么办法能分隔这个日志?
先把整行数据读进来a = load xxx.log as (datastr);,然后用b = foreach a generate REGEX_EXTRACT(datastr,'正则',1) as accesstime;就能用正则分割数据了