欢迎来到 AI 中文社区(简称 AI 中文社),这里是学习交流 AI 人工智能技术的中文社区。 为了更好的体验,本站推荐使用 Chrome 浏览器。
Pig UDF(用户定义函数)
为了指定自定义处理,Pig 提供对用户定义函数(UDF) 的支持。因此,Pig 允许我们创建自己的函数。目前,Pig UDF 可以使用以下编程语言实现::
- Java
- Python
- Jython
- JavaScript
- Ruby
- Groovy
在所有语言中,Pig 为 Java 函数提供了最广泛的支持。但是,对 Python、Jython、JavaScript、Ruby 和 Groovy 等语言的支持有限。
Pig UDF 示例
- 所有 UDF 必须扩展"org.apache.pig.EvalFunc"
- 所有函数都必须覆盖"exec"方法。
让我们看一个简单的 EVAL 函数示例,将提供的字符串转换为大写。
UPPER.java
package com.hadoop;
import java.io.IOException;
import org.apache.pig.EvalFunc;
import org.apache.pig.data.Tuple;
public class TestUpper extends EvalFunc<String> {
public String exec(Tuple input) throws IOException {
if (input == null || input.size() == 0)
return null;
try{
String str = (String)input.get(0);
return str.toUpperCase();
}catch(Exception e){
throw new IOException("Caught exception processing input row ", e);
}
}
}
- 创建jar文件并将其导出到特定目录。为此,右键单击项目-导出-Java-JAR 文件-下一步。

- 现在,为 jar 文件提供一个特定名称并将其保存在本地系统目录中。

- 在本地机器上创建一个文本文件并插入元组列表。
$ nano pigsample

- 上传特定目录下 HDFS 上的文本文件。
$ hdfs dfs-put pigexample /pigexample
- 在本地机器上创建一个 pig 文件并编写脚本。
$ nano pscript.pig

- 现在,在终端中运行脚本以获取输出。
$pig pscript.pig

在这里,我们得到了想要的输出。
下一章:Apache Pig LOAD 操作符
Apache Pig LOAD 操作符用于从文件系统加载数据。 语法LOAD 'info' [USING FUNCTION] [AS SCHEMA];这里,LOAD 是一个关系运算符。'in ...
AI 中文社