本帖最后由 sstutu 于 2014-2-17 01:51 编辑
可以带着下面问题来阅读:
1.pig脚本在Java中如何实现?
2.pig编程需要引入那个包?
3.如何编译运行含pig.jar的程序?
在Java编程中使用pig,和Java中通过JDBC使用sql是一样的。
我们假设需要计数的一个文件中的每个单词出现的次数。我们假定已经通过 EvalFunction 标记分析一行文本并返回所有的单词。函数位于位于/ mylocation /tokenize.jar。
PigLatin 脚本为
- register /mylocation/tokenize.jar
- A = load 'mytext' using TextLoader();
- B = foreach A generate flatten(tokenize($0));
- C = group B by $1;
- D = foreach C generate flatten(group), COUNT(B.$0);
- store D into 'myoutput';
复制代码
在Java编程,实现如下:- import java.io.IOException;
- import org.apache.pig.PigServer;
-
- public class WordCount {
- public static void main(String[] args) {
-
- PigServer pigServer = new PigServer();
-
- try {
- pigServer.registerJar("/mylocation/tokenize.jar");
- runMyQuery(pigServer, "myinput.txt";
- }
- catch (IOException e) {
- e.printStackTrace();
- }
- }
-
- public static void runMyQuery(PigServer pigServer, String inputFile) throws IOException {
- pigServer.registerQuery("A = load '" + inputFile + "' using TextLoader();");
- pigServer.registerQuery("B = foreach A generate flatten(tokenize($0));");
- pigServer.registerQuery("C = group B by $1;");
- pigServer.registerQuery("D = foreach C generate flatten(group), COUNT(B.$0);");
-
- pigServer.store("D", "myoutput");
- }
- }
复制代码
首先用下面命令编译- javac -cp <path>pig.jar WordCount.java
复制代码
编译成功然后运行程序- java -cp <path>pig.jar WordCount
复制代码
以上内容简略翻译,不当之处,欢迎指正
详细查看原文链接Embedding Pig In Java Programs
|