2014-04-24 28 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