0

我正在开发一个使用 LinkedIn 的 datafu UDF 编译的 TransposeTupleToBag UDF 的项目。在这里找到:https ://github.com/linkedin/datafu/tree/master/src/java/datafu/pig/util 。我在 grunt shell 中执行以下命令:

REGISTER jar-file;

DEFINE Transpose datafu.pig.util.TransposeTupleToBag();

a = load data 'file' using PigStorage(',') as (schema);

b = foreach a generate select_columns_from_schema;

c = foreach b generate col1, col2, datafu.pig.util.Transpose(col3, col4...coln);

当我执行最后一行时,我收到此错误:

[main] ERROR org.apache.pig.tools.grunt.Grunt - ERROR 1200: Instance name is null.  
This should not happen unless UDFContextSignature was not set.

我究竟做错了什么?如何避免?我也没有更改他们的任何代码。而且我只使用 TransposeTupleToBag、FieldNotFound 和 AliasableEvalFunc,因为它们是成功运行 Transpose 所需的类。我什至对所有加载的类都进行了同样的尝试,但它仍然给了我同样的错误。这是怎么回事?请帮忙。谢谢!

4

2 回答 2

0

TransposeTupleToBag 需要 Pig 0.11 中调用 setUDFContextSignature 的功能。这用于区分 UDF 的每次调用。此方法在 Pig 0.10 中不存在。

于 2013-09-22T18:13:59.507 回答
0

事实证明,LinkedIn 的 datafu 在 pig 0.11.1 上进行了测试,仅此而已。我正在运行 pig 0.10,因此它不起作用,因为可能没有在 pig 0.10 中设置某些属性,但可能在 pig 0.11.1 中已修复。

于 2013-09-20T16:49:49.893 回答