1

我用 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。

可能吗 ?

谢谢。

4

1 回答 1

2

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

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

于 2013-05-27T08:31:56.727 回答