我正在处理 Pig 中的一些数据,其中包括感兴趣的字符串,可选地用分号分隔并以随机顺序,例如
test=12345;foo=bar
test=12345
foo=bar;test=12345
以下代码应提取测试“键”的字符串值:
blah =
FOREACH
data
GENERATE
FLATTEN (
EXTRACT (
str_of_interest,
'test=(\\S+);?'
)
)
AS (
test: chararray
)
;
但是,在运行代码时,我遇到以下错误:
<line 46, column 0> mismatched character '<EOF>' expecting '''
2013-04-16 04:46:05,245 [main] ERROR org.apache.pig.tools.grunt.Grunt - ERROR 1200: <line 46, column 0> mismatched character '<EOF>' expecting '''
我以为我一开始就关闭了正则表达式转义语法,但这似乎不是问题。我从 Google 搜索中获得的唯一信息是一个似乎最近已修复的错误报告,但它仍然是我正在运行的 Amazon EMR 集群上的一个问题(为了进行分析,刚刚启动了 ad hoc)。
正如错误报告中和其他地方所建议的那样,将分号替换为其 Unicode 等效项 (\u003B) 会产生相同的错误。
我可能疯了,这可能是一个语法问题,所以我希望有人能够指出我正确的方向或确认这是一个现有的问题。如果是后者,是否有任何解决方法(在 Pig 中或匹配我想要的字符串)?
干杯