在 Pig 声明语句中转义括号

Escaping parenthesis in Pig declare statement

猪版: 0.12.0-cdh5.10.1

我对使用 pig 还很陌生。我了解到有几种方法可以在 pig 中定义参数。其中之一是 'declare' 语句。只是想知道,我们是否可以在参数值中使用像“(”和“)”(括号)这样的字符。我试图在可能包含“(”和“)”字符的声明语句中保存几个(不同提要的变量)查找值,因此它抛出错误。我还尝试使用 "\""\\" 转义这些字符,但它似乎不起作用 例如, 关于 运行 猪中的以下语句:

%declare DESC 'Joe\(s URL'

尝试使用以下命令读取相同内容时出现以下错误:

sh echo $DESC

错误:

2018-02-25 10:11:55,692 [main] ERROR org.apache.pig.tools.grunt.Grunt - ERROR 1000: Error during parsing. Lexical error at line 8, column 13.  Encountered: "(" (40), after : ""

但是,这种转义方法适用于下页提到的“%”和“=”等字符:

https://wiki.apache.org/pig/ParameterSubstitution

有什么办法可以在declare语句中转义“(”和“)”这样的字符吗?我注意到同样的情况也适用于“'”。

似乎括号不需要在 Pig 声明语句中转义。请看这个玩具示例:

%declare DESC 'Joe(s URL'
A = LOAD ...
B = LIMIT A 2;
C = FOREACH B GENERATE '$DESC' AS var;
dump;

(Joe(s URL)
(Joe(s URL)

我还能够通过命令行将带括号的参数传递给 Pig,例如:

pig -f temp.pig -p DESC='Joe(s URL'