0

我在这里使用 Pig on Hadoop 和 DataFu 示例(http://datafu.incubator.apache.org/docs/datafu/guide/set-operations.html),这是我的代码和错误消息,任何人都有任何想法错误的?谢谢。

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;

[main] 错误 org.apache.pig.tools.grunt.Grunt - 错误 1070:无法使用导入解析 SetDifference:

提前谢谢, 林

4

1 回答 1

4

@LinMa:看起来您在访问 UDF 时使用了错误的大小写。

为访问 UDF 定义的别名是:

定义 setDifference datafu.pig.sets.SetDifference();

在使用/调用该方法时,您必须使用别名。

GENERATE setDifference(sorted_b1,sorted_b2);
于 2015-09-05T16:36:42.517 回答