错误1066:无法打开alias的迭代器

oo7oh9g9  于 2021-06-25  发布在  Pig
关注(0)|答案(2)|浏览(257)

我犯了个错误 Unable to open iterator for alias 对于一个简单的 LOAD 以及 DUMP 清管器操作。我已经看了下面的答案:
错误1066:无法打开别名-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.logicalayer.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:错误0:java.io.ioexception:未能在org.apache.pig.impl.io.filelocalizer.relativeroot(filelocalizer)上将路径:\tmp\temp946561981的权限设置为0700。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:未能在org.apache.hadoop.fs.fileutil.checkreturnvalue(fileutil)上将路径:\tmp\temp946561981的权限设置为0700。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多个

pig文件内容:

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\u home之外,还有其他环境变量需要特别设置吗?

pqwbnv8z

pqwbnv8z1#

通常,由于路径不正确或无法访问文件路径,我们会将此错误作为“error org.apache.pig.tools.grunt.grunt-error 1066:unable to open iterator for alias”。
检查文件位置是否正确。
检查您是否能够访问该文件。
我发现hadoop namenode的这个问题safemode是开的。所以我做了以下命令关闭安全模式:

sudo -u hdfs hadoop dfsadmin -safemode leave

那对我来说就行了。

8xiog9wr

8xiog9wr2#

首先检查hadoop的权限状态,如果它的根用户更改了它。
$苏多周testuser:testuser /(hadoop文件夹的路径)
权限问题将得到解决。
我希望这能奏效

相关问题