我在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。
有可能吗?
感谢。
答案 0 :(得分:2)
您可以使用Iterator
中的openIterator
方法检索指定别名中所有元组的PigServer
。这假设您的猪脚本中没有其他dump
或store
语句。
另请参阅:http://pig.apache.org/docs/r0.10.0/api/org/apache/pig/PigServer.html#openIterator(java.lang.String)