在Pig声明语句中转义括号

时间:2018-02-25 15:25:37

标签: hadoop apache-pig hadoop2

enter image description here PIG VERSION :0.12.0-cdh5.10.1

我使用猪是相当新的。我了解到有几种方法可以在猪中定义参数。其中一个是宣布'声明。只是想知道,如果我们可以使用像"("和")" (括号)中的参数值。我试图在declare语句中保存少量(不同的feed的变量)查找值,这可能包含"("和")"由于它投掷错误的字符。我还尝试使用" \" " \\" 来逃避这些字符,但它似乎无法正常工作 例如, 在猪身上运行以下声明:

%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 : ""

但是,这种逃避方法适用于像#34;%"和" ="这些在下面的页面中提到:

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

有没有办法逃脱像#34;("和")"在声明声明中?我注意到同样的情况是" ' "还

1 个答案:

答案 0 :(得分:1)

似乎括号不需要在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'