【发布时间】: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