PigServer脚本执行

时间:2016-01-11 10:58:34

标签: java hadoop apache-pig cloudera

我有一个生成猪脚本的java代码。我想知道是否有选项直接在java代码中执行该脚本。我发现有一个选项可以使用PigServer类在Java代码中嵌入pig脚本执行。

问题是我使用AvroStorage存储结果,而类包含显然使用文件存储的方法Store()

有没有办法如何使用PigServer类在JAVA中使用AvroStorage执行我的pig脚本?

来自他们DOC的通用代码,他们使用pigServer.store(" D"," myoutput");但我需要调用AvroStorage而不是文件。

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

0 个答案:

没有答案