【问题标题】: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 中后,您希望进行哪些进一步的处理?

标签: java hadoop bigdata apache-pig


【解决方案1】:

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

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

【讨论】:

  • 好的,谢谢,它似乎工作。硬盘不会被请求,所有的计算都会在内存上,是吗?
猜你喜欢
  • 2023-03-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-11-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-10-05
相关资源
最近更新 更多