使用linkedin的datafu包时出错

xuo3flqw  于 2021-06-25  发布在  Pig
关注(0)|答案(2)|浏览(502)

我正在做一个使用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所需的类。我甚至在加载了所有类的情况下也尝试了同样的方法,但仍然给了我同样的错误。发生什么事?请帮忙。谢谢!

sqxo8psd

sqxo8psd1#

TransportSetupletoBag需要pig 0.11中的一个特性,在该特性中调用setudfcontextsignature。这用于区分udf的每次调用。此方法在pig 0.10中不存在。

wxclj1h5

wxclj1h52#

结果证明,linkedin的datafu是在Pig0.11.1上测试的,其他什么都没有。我运行的是pig0.10,所以它不起作用,因为pig0.10中可能没有设置某些属性,但是pig0.11.1中可能已经修复了这些属性。

相关问题