是否可以将参数的值传递给udf构造函数?

polhcujo  于 2021-06-25  发布在  Pig
关注(0)|答案(1)|浏览(253)

我已经编写了一个接受构造函数参数的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值包含特殊字符,如“%$!”但没有引用。所以我不确定我是遇到了一个值扩展问题还是一个参数没有被扩展。
我正在参数文件中设置不带引号的参数值:

secret = My$ecr%t!
c90pui9n

c90pui9n1#

将参数值传递给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 另外,可能需要pig>=0.11
https://issues.apache.org/jira/browse/pig-2931

相关问题