Hadoop 如何传递到UDF整个关系?

Hadoop 如何传递到UDF整个关系?,hadoop,apache-pig,Hadoop,Apache Pig,考虑以下脚本: 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 GE

考虑以下脚本:

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);
我得到了一个例外,一个列需要从一个关系中投影,才能用作标量

我可以这样通过整个关系

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

但这太冗长了。有更简单的方法吗?

是的,请尝试以下方法:

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

是的,请尝试以下操作:

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

是的,请尝试以下操作:

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

是的,请尝试以下操作:

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

我知道这是可能的!Thanx很多。而且,也许你知道为什么在第一个例子中我只得到键而没有值?因为你没有向UDFI传递任何东西,我想我得到了。又来了,我知道这是可能的!Thanx很多。而且,也许你知道为什么在第一个例子中我只得到键而没有值?因为你没有向UDFI传递任何东西,我想我得到了。又来了,我知道这是可能的!Thanx很多。而且,也许你知道为什么在第一个例子中我只得到键而没有值?因为你没有向UDFI传递任何东西,我想我得到了。又来了,我知道这是可能的!Thanx很多。而且,也许你知道为什么在第一个例子中我只得到键而没有值?因为你没有向UDFI传递任何东西,我想我得到了。又是唐克斯。