是否可以将参数的值传递给 UDF 构造函数?
Is it possible to pass the value of a parameter to an UDF constructor?
我写了一个带有构造函数参数的 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');
我尝试使用 -param
和 -param_file
选项初始化 $secret
。
是否完全支持 Pig 参数 作为 UDF 构造函数参数?
我正在加载的函数用于解密一些数据,参数值包含特殊字符,如“%$!”但没有报价。所以我不确定我是遇到了值扩展问题还是参数没有被扩展。
我在参数文件中设置不带引号的参数值:
secret = My$ecr%t!
绝对可以将参数值传递给UDF。问题似乎是 $
标志。
这应该是正确的语法:
define Decrypt com.company.pig.udf.MyFunction('$secret');
在你的参数文件中输入:
secret=My$ecr%t!
-dry运行 选项对此很有帮助,它将创建一个名为 <nameofpigfile>.pig.subsituted
的文件,而不是 运行 实际脚本。
pig -x local -dryrun -f mypigfile.pig -param_file myparameterfile
另外,你可能需要 pig >= 0.11
我写了一个带有构造函数参数的 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');
我尝试使用 -param
和 -param_file
选项初始化 $secret
。
是否完全支持 Pig 参数 作为 UDF 构造函数参数?
我正在加载的函数用于解密一些数据,参数值包含特殊字符,如“%$!”但没有报价。所以我不确定我是遇到了值扩展问题还是参数没有被扩展。
我在参数文件中设置不带引号的参数值:
secret = My$ecr%t!
绝对可以将参数值传递给UDF。问题似乎是 $
标志。
这应该是正确的语法:
define Decrypt com.company.pig.udf.MyFunction('$secret');
在你的参数文件中输入:
secret=My$ecr%t!
-dry运行 选项对此很有帮助,它将创建一个名为 <nameofpigfile>.pig.subsituted
的文件,而不是 运行 实际脚本。
pig -x local -dryrun -f mypigfile.pig -param_file myparameterfile
另外,你可能需要 pig >= 0.11