Java& Pig - 是否可以将pig脚本的输出变为Java变量?

时间:2013-05-27 07:40:07

标签: java hadoop bigdata apache-pig

我在Pig Latin中编写了一个脚本,我通过Java执行它。这是我的代码:

public static void main(String args[]){

    PigServer pigServer;
    try {

        Properties props = new Properties();
        props.setProperty("fs.default.name", "hdfs://localhost:8022");
        props.setProperty("mapred.job.tracker", "localhost:8021");

        System.setProperty("javax.xml.parsers.DocumentBuilderFactory", "com.sun.org.apache.xerces.internal.jaxp.DocumentBuilderFactoryImpl");

        pigServer = new PigServer(ExecType.MAPREDUCE, props);

        pigServer.registerScript("/home/training/Desktop/text_v6.pig");



    } 
    catch (ExecException e) {   e.printStackTrace(); } 
    catch (IOException e) { e.printStackTrace(); }

}

该程序运行良好,输出如下:

(2,4L)
(3,2L)
(1,1L)
...

我可能有数百万行这样的输出作为输出。这就是为什么我不想将Pig的输出存储到一个文件中,该文件将用Java读取。我想立即将结果存储到Java结构中,例如HashMap。

有可能吗?

感谢。

1 个答案:

答案 0 :(得分:2)

您可以使用Iterator中的openIterator方法检索指定别名中所有元组的PigServer。这假设您的猪脚本中没有其他dumpstore语句。

另请参阅:http://pig.apache.org/docs/r0.10.0/api/org/apache/pig/PigServer.html#openIterator(java.lang.String)