2015-01-06 1 views
2

생성자 매개 변수를 사용하는 UDF를 작성했습니다.매개 변수의 값을 UDF 생성자에 전달할 수 있습니까?

나는 성공적으로 초기화

grunt> register mylib.jar 
grunt> define Function com.company.pig.udf.MyFunction('param-value'); 

grunt에 그것을 사용하지만

grunt> define Decrypt com.company.pig.udf.MyFunction($secret); 

또는

grunt> define Decrypt com.company.pig.udf.MyFunction('$secret'); 

같이 돼지 매개 변수를 사용하여 초기화 할 수 없습니다했습니다 -param과를 모두 사용하여 $secret을 초기화하려고했습니다.옵션.

Are 돼지 매개 변수은 UDF 생성자 인수로 전혀 지원됩니까?

로드하는 함수는 일부 데이터를 해독하는 데 사용되며 param-value에는 특수 문자가 "% $!"로 포함되어 있습니다. 하지만 따옴표는 없습니다. 따라서 값 확장 문제 또는 매개 변수가 확장되지 않고 있는지 여부는 확실하지 않습니다.

은 내가 PARAM 파일에 따옴표없이 매개 변수 값을 설정하고 있습니다 :

secret = My$ecr%t! 

답변

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

또한, 당신은 아마> = 돼지 필요 0.11

https://issues.apache.org/jira/browse/PIG-2931

관련 문제