hadoop - 在hadoop上使用udf运行Pig脚本

标签 hadoop apache-pig hadoop-streaming

我是hadoop和 pig 的新手。我想知道如何运行内部调用UDF方法的Pig脚本吗?问题是我看不到Pig UDF Manual网站上提到的语句“register blah.jar”:

register myudfs.jar;
A = load 'student_data' as (name: chararray, age: int, gpa: float);
B = foreach A generate flatten(myudfs.Swap(name, age)), gpa;
C = foreach B generate $2;
D = limit B 20;
dump D;

但是我确实看到一个包含“blah.jar”的“jar”目录。我的同事已经离开了,所以我想知道诀窍是什么?也许我可以将jar文件添加到命令行?

非常感谢!

最佳答案

如果脚本中没有REGISTER语句(并且脚本有效),则除了Pig的builtin functions中的任何一个之外,它都不会调用任何UDF。如果您想使用UDF,则需要REGISTER语句。如果未调用UDF,则不需要REGISTER,这可能就是为什么您没有在脚本中看到它的原因。

Here是编写UDF的良好引用。编写完之后,您需要将其编译为jar文件,并确保还包括其依赖的任何类(例如EvalFunc)。这是您将使用REGISTER的jar。

关于hadoop - 在hadoop上使用udf运行Pig脚本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13439413/

相关文章:

apache - 在 JSON 中获取 Hadoop 作业跟踪器指标

hadoop - 并行运行多个 map task

hadoop - 为 Amazon EMR 应用程序设置 Reducer 的数量

使用 Mxnet 的 Hadoop 流作业在 AWS Emr 中失败

java - Hadoop 字数统计示例 - 空指针异常

hadoop - 如何为高优先级处理预留 yarn 容器 - pig jobs

java - Pig - JsonMetadata - 找不到架构文件

java - 如何在 Hadoop 流中将不可打印指定为键值分隔符

hadoop - hadoop输入数据问题

apache-pig - 如何在 Pig 中读取 Mahout 生成的序列文件