Venkat Ramakrishnan
Venkat Ramakrishnan

Reputation: 132

ERROR 1066: Unable to open iterator for alias

I am getting an error Unable to open iterator for alias for a simple LOAD and DUMP operation with Pig. I already took a look at the answers at:

ERROR 1066: Unable to open iterator for alias - Pig

But they don't help me.

My environment:

OS: Windows 7
Pig version: 0.13.0
Mode: Local

It shows in the error that the exception is 'Caused by' a failure to change permission of a file in the TMP directory. But when I checked the TMP directory, there's no such file (probably it got deleted after the command is finished?).

Logs below (with -v and -w options) :

'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

Details also at logfile: D:\Pig\pig-0.13.0\bin\data-1.txt1422071424329.log

Pig Stack Trace

ERROR 1066: Unable to open iterator for alias a 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

Pig file contents:

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

Contents of s.csv:

Yang   Yilin    China       2008    Gymnastics  1   0   2   3

Leisel Jones    Australia   2000    Swimming    0   2   0   2

Is there anything wrong in the syntax of the LOAD statement? Are there any environment variables that need to be set specifically other than JAVA and JAVA_HOME?

Upvotes: 1

Views: 6423

Answers (2)

Sasra S
Sasra S

Reputation: 21

Generally we will get this error as "ERROR org.apache.pig.tools.grunt.Grunt - ERROR 1066: Unable to open iterator for alias" due to incorrect path or not able to access the file path.

  1. check the file location is correct or not.
  2. check are you able to access the file.

I got this issue with hadoop namenode safemode is on. So I did below command to OFF safemode:

sudo -u hdfs hadoop dfsadmin -safemode leave

Then it works for me.

Upvotes: 1

Sanyog Tiwari
Sanyog Tiwari

Reputation: 31

first check your hadoop permission status if its root change it too user.

$sudo chown -R testuser:testuser /(path of hadoop folder)

permission problem will be solve.

I hope this will work

Upvotes: 1

Related Questions