java&pig-是否可以将pig脚本的输出转换成java变量?

s4chpxco  于 2021-06-04  发布在  Hadoop
关注(0)|答案(1)|浏览(262)

我用Pig拉丁语写了一个脚本,然后通过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。
有可能吗?
谢谢。

u0sqgete

u0sqgete1#

您可以检索 Iterator 使用 openIterator 中的方法 PigServer . 这是假设你没有其他人 dump 或者 store 你的Pig剧本里的陈述。
另请参见:http://pig.apache.org/docs/r0.10.0/api/org/apache/pig/pigserver.html#openiterator(java.lang.string)

相关问题