我使用猪是相当新的。我了解到有几种方法可以在猪中定义参数。其中一个是宣布'声明。只是想知道,如果我们可以使用像"("和")" (括号)中的参数值。我试图在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;("和")"在声明声明中?我注意到同样的情况是" ' "还
答案 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'