1

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?

Community
  • 1
  • 1
  • 1
    Not sure about the permissions thing, but you should explicitly state which storage to use during load, in your case `using PigStorage(' ')` since your separator seems to be a space rather than \t as is default for PigStorage. – LiMuBei Jan 26 '15 at 15:26
  • @Venkat : As mentioned by LiMuBei, if s.csv is tab delimited file then it should work. If tab is not the delimiter then the delimiter used has to be specified using PigStorage('{delimiter}') – Murali Rao May 12 '15 at 01:04
  • For people who found this post when looking for [ERROR 1066: Unable to open iterator for alias](http://stackoverflow.com/questions/34495085/error-1066-unable-to-open-iterator-for-alias-in-pig-generic-solution) here is a [generic solution](http://stackoverflow.com/a/34495086/983722). – Dennis Jaheruddin Dec 28 '15 at 15:34
  • I faced the same error as you had mentioned and mine worked when I gave the input directory correctly. Initially I had missed specifying the correct input directory in the `LOAD` statement and had a tough time debugging the cause, later realized how stupid i'm after finding it. – Chendur Mar 13 '16 at 10:46

2 Answers2

1

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

1

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.

CKE
  • 1,344
  • 9
  • 14
  • 25
Sasra S
  • 21
  • 1