2014-04-24 76 views
0

考虑这个脚本:如何传递给UDF全关系?

register udf-1.0.0-BETA.jar 

A = LOAD '1.txt' USING PigStorage('\t') as (key1:chararray, val1:chararray); 
B = LOAD '2.txt' USING PigStorage('\t') as (key2:chararray, val2:chararray); 
joined = JOIN A by key1, B by key2; 
out = FOREACH joined GENERATE com.example.UDF(); 
dump out; 

像这样我的UDF只得到钥匙。如果我试试这个:

out = FOREACH joined GENERATE com.example.UDF(joined); 

我得到一个例外A柱需要从关系来预计它被用作标

我可以通过这样的

out = FOREACH joined GENERATE com.example.UDF(A::key1, A::val1, B::key2, B::val2); 
整个关系

但它是冗长的。有一个更简单的方法吗?

回答

3

是,请尝试以下操作:

out = FOREACH joined GENERATE com.example.UDF(*); 
+0

我知道这是可能的!非常感谢。 – Moses

+0

另外,也许你知道为什么在第一个例子中,我只得到键而不是值? – Moses

+0

因为你没有传递任何东西给UDF – Frederic