使用 LinkedIn 的 datafu 包时出错

Posted

技术标签:

【中文标题】使用 LinkedIn 的 datafu 包时出错【英文标题】:Error when using LinkedIn's datafu package 【发布时间】:2013-09-19 22:49:13 【问题描述】:

我正在开发一个使用 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 所需的类。我什至对所有加载的类都进行了同样的尝试,但它仍然给了我同样的错误。这是怎么回事?请帮忙。谢谢!

【问题讨论】:

【参考方案1】:

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

【讨论】:

虽然我意识到了同样的事情,但就解决具体问题而言,您的回答比我的要清楚得多。谢谢!【参考方案2】:

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

【讨论】:

以上是关于使用 LinkedIn 的 datafu 包时出错的主要内容,如果未能解决你的问题,请参考以下文章

在linkedin上发布数据时出错?

LinkedIn PBI 自定义数据连接器 - 计划报告刷新时出错

尝试将 Linkedin SDK 集成到我的 Swift 项目中时出错

使用 Azure Pipelines 上传 python 包时出错

使用 composer 安装包时出错,但包似乎已安装

使用C#执行SSIS包时出错