我在我的机器上安装了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)
我试图改变load到LOAD和as到AS,但毫无效果.
我遇到了同样的问题,正在寻找解决方案.事实证明,如果你不给空间,就会发生这种情况.book=load会给你一个错误.book = load将工作.我不确定这是否是预期的行为.
小智 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)
希望这可以帮助。
| 归档时间: |
|
| 查看次数: |
13478 次 |
| 最近记录: |