【问题标题】:Pig UDF loading issuePig UDF 加载问题
【发布时间】:2013-05-31 12:58:18
【问题描述】:

我无法同时使用 2 个 UDF

REGISTER 'pig.jar';
REGISTER 'piggybankjar';
DEFINE UnixToISO org.apache.pig.piggybank.evaluation.datetime.convert.UnixToISO();
DEFINE ToDate org.apache.pig.builtin.ToDate();

这是我得到的错误: 无法将 org.apache.pig.piggybank.evaluation.datetime.convert.UnixToISO 的匹配函数推断为多个匹配或都不匹配。请使用显式转换。

当我不注册 pig.jar 时,这个错误消失了,但是它无法加载 ToDate UDF?

我在这里缺少一些基本的东西吗?任何帮助是极大的赞赏。谢谢

【问题讨论】:

  • 不确定是不是拼写错误,但你输入的是piggybankjar而不是piggybank.jar,你能确认这只是一个拼写错误吗?
  • 你需要注册 pig.jar - 这肯定是内置的吗?
  • @CharlesMenguy 当我发布问题时,这只是一个错字......实际的猪脚本中不存在
  • @ChrisWhite 我删除了 pig.jar 的注册码,然后它没有加载 ToDate 函数。这是我得到的确切错误“Could not resolve org.apache.pig.builtin.ToDate using imports: [, org.apache.pig.builtin., org.apache.pig.impl.builtin.]”
  • 有 2 个问题。我们固有的 pig.jar 是旧版本,不包含 ToDate UDF。所以必须包含一个新的 pig.jar。我的问题中不清楚的第二个问题是,我将时间读取为 chararray,因此 UnixToISO 抛出错误。将其类型转换为 lang 修复了它。产生的错误虽然不清楚

标签: hadoop user-defined-functions apache-pig


【解决方案1】:

我在使用 Pig 时遇到了类似的错误。到目前为止,在我遇到的所有情况下,此错误消息都是误导性的。我对内置的 SUM 函数有同样的错误。经过彻底分析,我意识到我将错误的输入传递给 SUM 函数,问题出在 GROUPing 上。所以我建议你再次验证你的猪脚本;很有可能还有其他错误,很可能是在流程中提供了一些错误的关系。

【讨论】:

    猜你喜欢
    • 2016-12-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-10-25
    相关资源
    最近更新 更多