[ 
https://issues.apache.org/jira/browse/PIG-255?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12603175#action_12603175
 ] 

Olga Natkovich commented on PIG-255:
------------------------------------

Hi Ajay,

I am trying to understand the issue that you are raising better. If I 
understand correctly, you want to pass arguments to your UDF via define 
statement and you want the same arguments to be used for all stages of 
algebraic function computation. Is this correct?

I looked at the code and it was not immediately obvious to me why it would not 
work right now. We use the arguments in the constructor of the FuncEvalSpec so 
this data should be available to all functions. What am I missing?

Also, a simple unit test that demonstrates the problem would be very helpful.

> Calling non default constructor of Final class from Main class in UDF
> ---------------------------------------------------------------------
>
>                 Key: PIG-255
>                 URL: https://issues.apache.org/jira/browse/PIG-255
>             Project: Pig
>          Issue Type: Improvement
>            Reporter: Ajay Garg
>            Priority: Minor
>
> Pig supports the use of define to call a non default constructor. Making it 
> work across Algebraic functions is not possible with the current code. The 
> problem is once the func is defined to use a non default constructor which 
> takes in names of the variables, we have no way of transmitting this 
> information from the main class to the final class. We tried passing the func 
> spec through the call to getFinal(). That is, What ever names we get in the 
> main class we store it and when the getFinal method is called, instead of 
> just passing the name of the Final class we attach the string args received 
> by the main class to the name to construct a func spec. For ex. if define COV 
> = Covariance('Population', 'Height'); Then we would have the "Population' & 
> 'Height' stored in the main class. A call to getFinal would return 
> Covariance$Final("Population", "Height") instead of just Covariance$Final. I 
> guess this is the right way to go. However, pig has a problem with this. The 
> resolveClassName method doesn't think of its args as specs and assumes them 
> to be just names. So in createJar, when the func spec, 
> Covariance$Final("Population", "Height") is being resolved it fails. I think 
> this is an issue with pig and we need to resolve it by clipping the args 
> before doing a resolveClassName. 

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.

Reply via email to