我在Hadoop和DataFu示例(http://datafu.incubator.apache.org/docs/datafu/guide/set-operations.html)上使用Pig,这是我的代码和错误消息,任何人有任何想法怎么回事?谢谢。
register datafu-1.2.0.jar;
define setDifference datafu.pig.sets.SetDifference();
-- ({(3),(4),(1),(2),(7),(5),(6)},{(1),(3),(5),(12)})
input = load 'input.txt' AS (B1:bag{T:tuple(val:int)},B2:bag{T:tuple(val:int)});
differenced = FOREACH input {
-- input bags must be sorted
sorted_b1 = ORDER B1 by val;
sorted_b2 = ORDER B2 by val;
GENERATE SetDifference(sorted_b1,sorted_b2);
}
-- produces: ({(2),(4),(6),(7)})
DUMP differenced;
[主要]错误org.apache.pig.tools.grunt.Grunt-错误1070:使用导入无法解析SetDifference:
提前致谢,
林
最佳答案
@LinMa:似乎您在访问UDF时使用了错误的大小写。
定义访问UDF的别名为:
定义setDifference datafu.pig.sets.SetDifference();
使用/调用方法时,必须使用别名。
GENERATE setDifference(sorted_b1,sorted_b2);