【问题标题】:ERROR 1066: Unable to open iterator for aliasERROR 1066:无法打开别名的迭代器
【发布时间】:2015-03-23 05:23:14
【问题描述】:

对于 Pig 的简单 LOADDUMP 操作,我收到错误 Unable to open iterator for alias。我已经看过答案了:

ERROR 1066: Unable to open iterator for alias - Pig

但他们没有帮助我。

我的环境:

OS: Windows 7
Pig version: 0.13.0
Mode: Local

它在错误中显示异常是“由”导致更改失败 TMP 目录中文件的权限。但是当我查看tmp目录时,没有这个文件(可能是命令完成后被删除了?)。

以下日志(带有 -v 和 -w 选项):

'D:\H\HADOOP-2.6.0\bin\hadoop-config.cmd' is not recognized as an internal or external command,
operable program or batch file.
15/01/24 09:20:22 INFO pig.ExecTypeProvider: Trying ExecType : LOCAL
15/01/24 09:20:22 INFO pig.ExecTypeProvider: Picked LOCAL as the ExecType
2015-01-24 09:20:22,909 [main] INFO  org.apache.pig.Main - Apache Pig version 0.13.0 (r1606446) compiled Jun 29 2014, 02:29:34
2015-01-24 09:20:22,909 [main] INFO  org.apache.pig.Main - Logging error messages to: d:\Pig\pig-0.13.0\bin\
2015-01-24 09:20:24,267 [main] INFO  org.apache.pig.impl.util.Utils - Default bootup file C:\Users\Venkat/.pigbootup not found
2015-01-24 09:20:24,438 [main] INFO  org.apache.pig.backend.hadoop.executionengine.HExecutionEngine - Connecting to hadoop file system at: file:///
2015-01-24 09:20:26,205 [main] WARN  org.apache.hadoop.util.NativeCodeLoader - Unable to load native-hadoop library for your platform... using builtin-java classes where applicable
2015-01-24 09:20:26,236 [main] ERROR org.apache.pig.tools.grunt.Grunt - ERROR 1066: Unable to open iterator for alias a
2015-01-24 09:20:26,236 [main] ERROR org.apache.pig.tools.grunt.Grunt - org.apache.pig.impl.logicalLayer.FrontendException: ERROR 1066: Unable to open iterator for alias a
    at org.apache.pig.PigServer.openIterator(PigServer.java:912)
    at org.apache.pig.tools.grunt.GruntParser.processDump(GruntParser.java:752)
    at org.apache.pig.tools.pigscript.parser.PigScriptParser.parse(PigScriptParser.java:372)
    at org.apache.pig.tools.grunt.GruntParser.parseStopOnError(GruntParser.java:228)
    at org.apache.pig.tools.grunt.GruntParser.parseStopOnError(GruntParser.java:203)
    at org.apache.pig.tools.grunt.Grunt.exec(Grunt.java:81)
    at org.apache.pig.Main.run(Main.java:479)
    at org.apache.pig.Main.main(Main.java:156)
Caused by: org.apache.pig.backend.datastorage.DataStorageException: ERROR 0: java.io.IOException: Failed to set permissions of path: \tmp\temp946561981 to 0700
    at org.apache.pig.impl.io.FileLocalizer.relativeRoot(FileLocalizer.java:484)
    at org.apache.pig.impl.io.FileLocalizer.getTemporaryPath(FileLocalizer.java:515)
    at org.apache.pig.impl.io.FileLocalizer.getTemporaryPath(FileLocalizer.java:511)
    at org.apache.pig.PigServer.openIterator(PigServer.java:887)
    ... 7 more
Caused by: java.io.IOException: Failed to set permissions of path: \tmp\temp946561981 to 0700
    at org.apache.hadoop.fs.FileUtil.checkReturnValue(FileUtil.java:689)
    at org.apache.hadoop.fs.FileUtil.setPermission(FileUtil.java:662)
    at org.apache.hadoop.fs.RawLocalFileSystem.setPermission(RawLocalFileSystem.java:509)
    at org.apache.hadoop.fs.FilterFileSystem.setPermission(FilterFileSystem.java:286)
    at org.apache.pig.backend.hadoop.datastorage.HPath.setPermission(HPath.java:122)
    at org.apache.pig.impl.io.FileLocalizer.createRelativeRoot(FileLocalizer.java:495)
    at org.apache.pig.impl.io.FileLocalizer.relativeRoot(FileLocalizer.java:481)
    ... 10 more

日志文件中还有详细信息:D:\Pig\pig-0.13.0\bin\data-1.txt1422071424329.log

猪栈跟踪

错误 1066:无法打开别名 a 的迭代器 org.apache.pig.impl.logicalLayer.FrontendException:错误 1066:无法打开别名 a 的迭代器 在 org.apache.pig.PigServer.openIterator(PigServer.java:912) 在 org.apache.pig.tools.grunt.GruntParser.processDump(GruntParser.java:752) 在 org.apache.pig.tools.pigscript.parser.PigScriptParser.parse(PigScriptParser.java:372) 在 org.apache.pig.tools.grunt.GruntParser.parseStopOnError(GruntParser.java:228) 在 org.apache.pig.tools.grunt.GruntParser.parseStopOnError(GruntParser.java:203) 在 org.apache.pig.tools.grunt.Grunt.exec(Grunt.java:81) 在 org.apache.pig.Main.run(Main.java:479) 在 org.apache.pig.Main.main(Main.java:156) 原因:org.apache.pig.backend.datastorage.DataStorageException: ERROR 0: java.io.IOException: 无法设置路径权限:\tmp\temp946561981 to 0700 在 org.apache.pig.impl.io.FileLocalizer.relativeRoot(FileLocalizer.java:484) 在 org.apache.pig.impl.io.FileLocalizer.getTemporaryPath(FileLocalizer.java:515) 在 org.apache.pig.impl.io.FileLocalizer.getTemporaryPath(FileLocalizer.java:511) 在 org.apache.pig.PigServer.openIterator(PigServer.java:887) ... 7 更多 原因:java.io.IOException:设置路径权限失败:\tmp\temp946561981 to 0700 在 org.apache.hadoop.fs.FileUtil.checkReturnValue(FileUtil.java:689) 在 org.apache.hadoop.fs.FileUtil.setPermission(FileUtil.java:662) 在 org.apache.hadoop.fs.RawLocalFileSystem.setPermission(RawLocalFileSystem.java:509) 在 org.apache.hadoop.fs.FilterFileSystem.setPermission(FilterFileSystem.java:286) 在 org.apache.pig.backend.hadoop.datastorage.HPath.setPermission(HPath.java:122) 在 org.apache.pig.impl.io.FileLocalizer.createRelativeRoot(FileLocalizer.java:495) 在 org.apache.pig.impl.io.FileLocalizer.relativeRoot(FileLocalizer.java:481)

... 10 更多

猪文件内容:

a = LOAD 's.csv' AS (NAME:chararray,COUNTRY:chararray,YEAR:int,SPORT:chararray,GOLD:int,SILVER:int,BRONZE:int,TOTAL:int);
DUMP a;

s.csv 的内容:

Yang   Yilin    China       2008    Gymnastics  1   0   2   3

Leisel Jones    Australia   2000    Swimming    0   2   0   2

LOAD 语句的语法有什么问题吗? 是否有任何需要专门设置的环境变量 比 JAVA 和 JAVA_HOME?

【问题讨论】:

  • 不确定权限的事情,但你应该明确说明在加载期间要使用哪个存储,在你的情况下 using PigStorage(' ') 因为你的分隔符似乎是一个空格而不是 \t 作为 PigStorage 的默认值.
  • @Venkat :正如 LiMuBei 所说,如果 s.csv 是制表符分隔的文件,那么它应该可以工作。如果 tab 不是分隔符,则必须使用 PigStorage('{delimiter}') 指定使用的分隔符
  • 对于在寻找ERROR 1066: Unable to open iterator for alias 时发现此帖子的人,这里是generic solution
  • 我遇到了与您提到的相同的错误,当我正确提供输入目录时,我的工作正常。最初我错过了在LOAD 语句中指定正确的输入目录,并且很难调试原因,后来意识到我在找到它后是多么愚蠢。

标签: apache-pig


【解决方案1】:

由于路径不正确或无法访问文件路径,通常我们会收到此错误“ERROR org.apache.pig.tools.grunt.Grunt - ERROR 1066: Unable to open iterator for alias”。

  1. 检查文件位置是否正确。
  2. 检查您是否可以访问该文件。

我在 hadoop namenode 安全模式打开时遇到了这个问题。 所以我做了以下命令关闭安全模式:

sudo -u hdfs hadoop dfsadmin -safemode leave

然后它对我有用。

【讨论】:

    【解决方案2】:

    首先检查你的hadoop权限状态,如果它的root也改变了它用户。

    $sudo chown -R testuser:testuser /(hadoop 文件夹路径)

    权限问题将得到解决。

    我希望这会奏效

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-03-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-10-25
      • 1970-01-01
      • 2016-04-02
      相关资源
      最近更新 更多