在 PIG 中执行 UDF 时出错

Posted

技术标签:

【中文标题】在 PIG 中执行 UDF 时出错【英文标题】:Error while excecuting UDF in PIG 【发布时间】:2013-03-20 13:42:36 【问题描述】:

我正在尝试使用示例运行我的第一个 UDF

http://wiki.apache.org/pig/UDFManual。 现在我有我的 FirstUdf.jar,myscript.pig 都在同一个文件夹中

我的myscript.pig如下

  REGISTER FirstUdf.jar; A = LOAD '/home/vishal/exampleforPIG1' AS
 (exchange: chararray, symbol: chararray, date: int,value:float);  

B =FOREACH A GENERATE myudfs.UPPER(symbol);

转储 B;

现在当我给出以下命令来运行我的脚本时,它给了我以下错误

命令--

java -cp FirstUdf.jar home/vishal/FirstUdf.jar -x local myscript.pig

以下错误--

ERROR 1000:解析时出错。遇到“java” 在第 1 行第 1 列。

我给的命令是错误的还是有什么问题

【问题讨论】:

【参考方案1】:

您可以尝试以下方法:

硬编码您拥有的自定义 UDF 的路径:

REGISTER '/path/to/FirstUdf.jar';
DEFINE myUDF com.example.MyUDF();
...

Then:
pig -f myscript.pig -x local

...或将其作为命令行参数传递:

REGISTER '$UDF_PATH/FirstUdf.jar';
DEFINE myUDF com.example.MyUDF();
...

Then:
pig -f myscript.pig -param UDF_PATH=/path/to -x local

【讨论】:

HI Lonard,感谢您的回复....我对 'Firstudf.jar 是否应该放在存钱罐或任何地方还有一个疑问 Firstudf.jar 不应该在 Piggybank 目录中,只需选择一个合适的位置来存储您的自定义 jar。 @vishal1985 另一方面,可以将问题恢复为您提出的原始问题,因为现在问题和我的答案不同步。整个事情看起来有点模棱两可。只需针对您遇到的其他问题创建一个新问题。 在您的用户资料/活动选项卡下,您可以看到您的问题的修订

以上是关于在 PIG 中执行 UDF 时出错的主要内容,如果未能解决你的问题,请参考以下文章

在 pig 脚本中执行 shell 命令时出错

在 Java 中执行 PigServer 时出错

Pig 处理多个文件错误:错误 0:在 [] 处执行 ForEach 时出错

使用 hacatalog 在 tez 模式下运行 pig 脚本时出错

在 Redshift 中创建 python UDF 时出错

在 pig 中使用 ASSERT 时出错