【问题标题】:Fetching Pig Script Output in Java在 Java 中获取 Pig 脚本输出
【发布时间】:2023-03-07 02:53:02
【问题描述】:

我可以加载将输出存储在 Java 中的 Pig 存储中的 pig 脚本的输出吗?

我所指的猪脚本的最后一行类似于 -

STORE D INTO '$output' USING PigStorage();

想在 java 中导入关系,以便在 UI 中进一步处理和呈现

如果是,我该怎么做?

【问题讨论】:

    标签: java shell apache-pig


    【解决方案1】:

    是的,你可以做到。使用Embedded Pig concept,它提供了有助于在java程序中运行pigscript的PigServer。

    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");
       }
    }
    

    这里有更多例子:http://www.programcreek.com/java-api-examples/index.php?api=org.apache.pig.PigServer

    【讨论】:

    • 感谢您的回复。采用这种方法时我有两个问题 - 1. 我的 jar 在某个远程服务器上,所以 pig 脚本在远程服务器中运行。当我尝试在本地注册罐子时,我无法做到这一点。如果我从命令提示符运行相同的脚本,运行良好。 2.我想处理 D 。 myoutput...如何在我的主块中访问它??
    • 1.对于传递远程位置jar,您可以参考massapi.com/source/github/93/75/937584214/test/org/apache/pig/…链接了解过程,2.要检索输出,请调用PigServer.openIterator()或PigServer.store()。
    • 对不起我的坏事!但我真的处于学习的早期阶段,需要一些描述性的答案。当我尝试 PigServer pig = new PigServer(ExecType.LOCAL);我在控制台中看到 - executionengine.HExecutionEngine: Connecting to hadoop file system at: file:/// 但是,根据我的理解,这应该在远程服务器位置进行检查。请指导。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多