PIG:ERROR 1000:解析时出错

bra*_*orm 7 hadoop apache-pig

我在我的机器上安装了Pig 0.12.我跑的时候

darwin$ pig
grunt> ls /data/
hdfs://Nmame:10001/data/pg20417.txt<r 3>    674570
hdfs://Nname:10001/data/pg4300.txt<r 3> 1573150
hdfs:/Nname:10001/data/pg5000.txt<r 3>  1423803
hdfs://Nname:10001/data/weather <dir>
Run Code Online (Sandbox Code Playgroud)

但是当我尝试创建查询时,出现以下错误:

grunt> book = load '/data/pg4300.txt' as (lines:chararray);
2014-06-30 17:40:08,939 [main] ERROR org.apache.pig.tools.grunt.Grunt - ERROR 1000: Error during parsing. Encountered " <PATH> "book=load "" at line 2, column 1.
Was expecting one of:
    <EOF> 
    "cat" ...
    "clear" ...
    "fs" ...
    "sh" ...
    "cd" ...
    "cp" ...
    "copyFromLocal" ...
    "copyToLocal" ...
    "dump" ...
    "\\d" ...
    "describe" ...
    "\\de" ...
    "aliases" ...
    "explain" ...
    "\\e" ...
    "help" ...
    "history" ...
    "kill" ...
    "ls" ...
    "mv" ...
    "mkdir" ...
    "pwd" ...
    "quit" ...
    "\\q" ...
    "register" ...
    "rm" ...
    "rmf" ...
    "set" ...
    "illustrate" ...
    "\\i" ...
    "run" ...
    "exec" ...
    "scriptDone" ...
    "" ...
    "" ...
    <EOL> ...
    ";" ...

Details at logfile: /Users/Documents/pig_1404175088198.log
Run Code Online (Sandbox Code Playgroud)

我试图改变loadLOADasAS,但毫无效果.

Dha*_*esh 9

我遇到了同样的问题,正在寻找解决方案.事实证明,如果你不给空间,就会发生这种情况.book=load会给你一个错误.book = load将工作.我不确定这是否是预期的行为.

  • 我不敢相信这是正确的解决方案。我已经在这个下午迷路了...谢谢!:) (2认同)
  • 简直难以置信!我花了几个小时试图弄清楚这一点。有史以来最糟糕的错误信息! (2认同)

小智 0

尝试以下解决方案,它应该有效 -

1) 删除 /data/ 如果您的数据存在于 HDFS 默认目录中,则无需使用绝对路径。我假设 /data 是您存储所有数据的默认目录 -

book = load 'pg4300.txt' as (lines:chararray);
Run Code Online (Sandbox Code Playgroud)

2)尝试使用PigStorage指定分隔符。我在这里使用逗号作为分隔符,您可以将其替换为您正在使用的分隔符 -

book = load 'pg4300.txt' using PigStorage(',') as (lines:chararray);
Run Code Online (Sandbox Code Playgroud)

希望这可以帮助。