Java & Pig - 是不是可以将 pig 脚本的输出转换为 Java 变量?
Posted
技术标签:
【中文标题】Java & Pig - 是不是可以将 pig 脚本的输出转换为 Java 变量?【英文标题】:Java & Pig - Is it possible to get the pig script's output into a Java variable?Java & Pig - 是否可以将 pig 脚本的输出转换为 Java 变量? 【发布时间】:2013-05-27 07:40:07 【问题描述】:我用 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。
有可能吗?
谢谢。
【问题讨论】:
我能知道你想对输出做什么吗?存储在 HashMap 中后,您希望进行哪些进一步的处理? 【参考方案1】:您可以使用PigServer
中的openIterator
方法在指定别名中的所有元组上检索Iterator
。这是假设您的 pig 脚本中没有其他 dump
或 store
语句。
另请参阅:http://pig.apache.org/docs/r0.10.0/api/org/apache/pig/PigServer.html#openIterator(java.lang.String)
【讨论】:
好的,谢谢,它似乎工作。硬盘不会被请求,所有的计算都会在内存上,是吗?以上是关于Java & Pig - 是不是可以将 pig 脚本的输出转换为 Java 变量?的主要内容,如果未能解决你的问题,请参考以下文章
pig 将Hbase中表导出为CSV出现错误 高分!!! 求解!!!
Pig - 使用 pig 加载 Word 文档(.doc 和 .docx)