PIG:ERROR 1000:解析时出错

时间:2014-07-01 00:41:43

标签: 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>

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

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

我尝试将load更改为LOAD,将as更改为AS,但没有任何效果。

6 个答案:

答案 0 :(得分:9)

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

答案 1 :(得分:0)

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

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

book = load 'pg4300.txt' as (lines:chararray);

2)尝试使用PigStorage to specify the delimiter。我在这里使用逗号作为分隔符,您可以将它替换为您正在使用的分隔符 -

book = load 'pg4300.txt' using PigStorage(',') as (lines:chararray);

希望这有帮助。

答案 2 :(得分:0)

尝试使用PigStorage来确定如何将数据读入书中

http://pig.apache.org/docs/r0.7.0/piglatin_ref2.html#PigStorage

答案 3 :(得分:0)

引发错误: stocks_by_symbol = stock_symbol的集团股票;

作品很棒: stocks_by_symbol = stock_symbol的集团股票;

注意“=”

之前和之后的空格

答案 4 :(得分:0)

尝试在grunt提示符中转储别名(错误的名称)时发生此错误。例如,键入dump r45而不是dump 45,因此会抛出上述错误。

提供正确的别名后,它可以正常工作。

另外,请确保从加载文件所在的位置执行查询。

答案 5 :(得分:0)

我遇到了同样的问题,我通过在=LOAD关键字之间提供空格来解决这个问题。