我编写了一个带有构造函数参数的UDF。
我已成功初始化并在grunt
中将其用作
grunt> register mylib.jar
grunt> define Function com.company.pig.udf.MyFunction('param-value');
但我无法使用Pig参数对其进行初始化,如
grunt> define Decrypt com.company.pig.udf.MyFunction($secret);
或
grunt> define Decrypt com.company.pig.udf.MyFunction('$secret');
我尝试使用$secret
和-param
选项初始化-param_file
。
是否支持 Pig参数作为UDF构造函数参数?
我加载的函数用于解密某些数据,而param-value包含特殊字符"%$!"但没有引号。因此,我不确定我是否遇到了价值扩张问题,或者是否存在未扩展的参数。
我在参数文件中设置了没有引号的参数值:
secret = My$ecr%t!
答案 0 :(得分:1)
绝对可以将参数值传递给UDF。问题似乎是$
符号。
这应该是正确的语法:
define Decrypt com.company.pig.udf.MyFunction('$secret');
在参数文件中放置:
secret=My\$ecr%t!
-dryrun选项对此有用,它将创建一个名为<nameofpigfile>.pig.subsituted
的文件,而不是运行实际的脚本。
pig -x local -dryrun -f mypigfile.pig -param_file myparameterfile
另外,您可能需要猪&gt; = 0.11