apachepig,使用regex解析组合日志

apachepig,使用regex解析组合日志,regex,parsing,logging,apache-pig,quote,Regex,Parsing,Logging,Apache Pig,Quote,我使用pig拉丁语脚本,并尝试使用regex解析日志,但在匹配双引号时返回错误”。 例如: 错误1200:意外字符'' 日志格式: 118.102.255.50---[17/Oct/2014:00:00:29-0400]“GET/favicon.ico HTTP/1.1”200 20“-”Mozilla/5.0(Windows NT 6.1;WOW64)AppleWebKit/537.36(KHTML,像Gecko)Chrome/38.0.2125.101 Safari/537.36”因为Pi

我使用pig拉丁语脚本,并尝试使用regex解析日志,但在匹配双引号时返回错误”。 例如: 错误1200:意外字符'' 日志格式:


118.102.255.50---[17/Oct/2014:00:00:29-0400]“GET/favicon.ico HTTP/1.1”200 20“-”Mozilla/5.0(Windows NT 6.1;WOW64)AppleWebKit/537.36(KHTML,像Gecko)Chrome/38.0.2125.101 Safari/537.36”
因为Pig使用Java正则表达式,所以您需要通过
\
像这样逃逸

log = FOREACH test GENERATE FLATTEN(REGEX_EXTRACT_ALL(line,'^(\\S+)\\s+(\\S+)\\s+(\\S+)\\s+.(\\S+\\s+\\S+).\\s+\\"(\\S+)\\s+(.+?)\\s+(HTTP[^"]+)\\"\\s+(\\S+)\\s+(\\S+)\\s+\\"([^"]*)\\"\\s+\\"(.*)\\"$')) AS (address_ip: chararray, logname: chararray, user: chararray, timestamp: chararray, method: chararray, uri: chararray, proto: chararray, status: int, bytes: int, referer: chararray, userAgent: chararray);

您好,谢谢,问题解决了。我刚刚删除了反斜杠“\for quotes”,而且它很有效,猪似乎不需要它,只需删除反斜杠即可。