错误1066:无法打开别名的迭代器 - 猪

时间:2013-12-03 11:38:06

标签: apache-pig

刚刚开始猪;尝试从文件加载数据并从此转储它。加载似乎是正确的,不会抛出任何错误。以下是查询:

  

NYSE = LOAD'/root/Desktop/Works/NYSE-2000-2001.tsv'使用   PigStorage()AS(交换:chararray,stock_symbol:chararray,   日期:chararray,stock_price_open:float,stock_price_high:float,   stock_price_low:float,stock_price_close:float,stock_volume:int,   stock_price_adj_close:浮动);

当我尝试进行转储时,会抛出以下错误:

猪堆痕迹

  

错误1066:无法为别名NYSE打开迭代器       org.apache.pig.impl.logicalLayer.FrontendException:错误1066:无法为别名NYSE打开迭代器           在org.apache.pig.PigServer.openIterator(PigServer.java:857)           在org.apache.pig.tools.grunt.GruntParser.processDump(GruntParser.java:682)           在org.apache.pig.tools.pigscript.parser.PigScriptParser.parse(PigScriptParser.java:303)           在org.apache.pig.tools.grunt.GruntParser.parseStopOnError(GruntParser.java:189)           在org.apache.pig.tools.grunt.GruntParser.parseStopOnError(GruntParser.java:165)           在org.apache.pig.tools.grunt.Grunt.run(Grunt.java:69)           在org.apache.pig.Main.run(Main.java:490)           在org.apache.pig.Main.main(Main.java:111)       引起:java.io.IOException:作业因异常状态FAILED而终止           在org.apache.pig.PigServer.openIterator(PigServer.java:849)“

知道是什么导致了这个问题吗?

4 个答案:

答案 0 :(得分:4)

如果是这种情况,您是否正在针对hadoop 2.2运行猪0.12.0或更早的jar 我设法通过从src重新编译猪罐来解决此错误,以下是debian类型框所涉及步骤的摘要

  1. 下载pig-0.12.0.tar.gz

  2. 解压缩jar并设置权限

  3. 然后在解压缩的目录中用'ant clean jar -Dhadoopversion=23'编译src

  4. 然后你需要在maven的类路径上获取jar,例如,在 同一目录

    mvn install:install-file -Dfile=pig.jar -DgroupId={set a groupId}-
                     DartifactId={set a artifactId} -Dversion=1.0 -Dpackaging=jar  
    

    或者如果在eclipse中,则将jar添加为外部libary / dependency

    我在pig 12中尝试运行hadoop 2.2.0,并且以上步骤为我工作了

    UPDATE
    我在猪jira上发布了我的问题,他们回应了。他们已经在这里为hadoop2 pig-h2.jar编了一个猪罐http://search.maven.org/#artifactdetails|org.apache.pig|pig|0.12.0|jar 这个罐子的maven标签是

      <dependency>
           <groupId>org.apache.pig</groupId>
           <artifactId>pig</artifactId>
          <classifier>h2</classifier>
          <version>0.12.0</version>
          <scope>provided</scope>
      </dependency>  
    

答案 1 :(得分:2)

这可能是由于猪版本从0.12开始变化。具体的变化是,Pig过去是允许的,并且自动忽略数据文件中的第一行,或者它会将该行解释为列名,在新版本的Pig中,这种允许性被删除了。解决方法是从输入文件中删除列名称,这应解决问题

卡皮尔西

答案 2 :(得分:0)

我也遇到了这个问题。然后我看到了这个链接:http://www.fanli7.net/a/JAVAbiancheng/ANT/20140325/441264.html

我只是将 pig版本从0.12.0替换为0.13.0 ,问题就解决了。 (此处,我的 hadoop版本为2.3.0

答案 3 :(得分:0)

您可以将断点连接到类PigServer到方法存储()。

{{1}}

在js对象中有字段errorMessage,它可能包含问题描述