2015-10-04 43 views
0

我想在Mac上读取猪壳上的csv文件。我所做的只是将一个文件load变成一个变量,并且变量为dump。下面是我如何做它:使用猪从csv文件中读取数据

movies = LOAD '/user/myhome/movies_data.csv' USING PigStorage(',') as (id,name,year,rating,duration); 
DUMP movies; 

我使用的数据是从github上下载提供here

此文件是在我的Mac本地安装HDFS提供。当我做dump我得到一个错误:

org.apache.pig.impl.logicalLayer.FrontendException: ERROR 1066: Unable to open iterator for alias movies

at org.apache.pig.PigServer.openIterator(PigServer.java:935) at org.apache.pig.tools.grunt.GruntParser.processDump(GruntParser.java:754) at org.apache.pig.tools.pigscript.parser.PigScriptParser.parse(PigScriptParser.java:376) at org.apache.pig.tools.grunt.GruntParser.parseStopOnError(GruntParser.java:230) at org.apache.pig.tools.grunt.GruntParser.parseStopOnError(GruntParser.java:205) at org.apache.pig.tools.grunt.Grunt.run(Grunt.java:66) at org.apache.pig.Main.run(Main.java:565) at org.apache.pig.Main.main(Main.java:177) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:497) at org.apache.hadoop.util.RunJar.run(RunJar.java:221) at org.apache.hadoop.util.RunJar.main(RunJar.java:136) Caused by: java.io.IOException: Job terminated with anomalous status FAILED at org.apache.pig.PigServer.openIterator(PigServer.java:927) ... 13 more

当我打的时候这个作业运行,我得到下面的异常应用集群链接:

Diagnostics: Exception from container-launch. Container id: container_1443887668938_0007_02_000001 Exit code: 127 Stack trace: ExitCodeException exitCode=127: at org.apache.hadoop.util.Shell.runCommand(Shell.java:538) at org.apache.hadoop.util.Shell.run(Shell.java:455) at org.apache.hadoop.util.Shell$ShellCommandExecutor.execute(Shell.java:715) at org.apache.hadoop.yarn.server.nodemanager.DefaultContainerExecutor.launchContainer(DefaultContainerExecutor.java:211) at org.apache.hadoop.yarn.server.nodemanager.containermanager.launcher.ContainerLaunch.call(ContainerLaunch.java:302) at org.apache.hadoop.yarn.server.nodemanager.containermanager.launcher.ContainerLaunch.call(ContainerLaunch.java:82) at java.util.concurrent.FutureTask.run(FutureTask.java:266) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) at java.lang.Thread.run(Thread.java:745) Container exited with a non-zero exit code 127 Failing this attempt. Failing the application.

猪的版本是0.15.0和Hadoop是2.6.1。我在这里错过了什么吗?

+0

相关的职位,请在此http://stackoverflow.com/questions/20350122/error-1066-unable-to-open-iterator-for-alias-pig – Paras

+0

是不是有帮助,但。就版本而言,我使用猪0.15.0和hadoop 2.6.1 – coder

+0

@coder:我没有看到脚本的任何问题。如果您正在集群模式下运行pig,您能否检查文件是否可用于hdfs?你可以尝试在本地驱动器中运行这个文件,并以本地模式运行相同的例子(pig -x local)? –

回答

0

您可以使用piggybank的CSVLoader。如果不可用,请取出储钱罐并注册并使用CSVLoader。像这样的东西。

register '/your/path/to/piggybank/jar' ; 
define CSVLoader org.apache.pig.piggybank.storage.CSVLoader(); 
movies = LOAD '/user/myhome/movies_data.csv' USING CSVLoader as (id,name,year,rating,duration); 
+0

但是不应该在这里使用PigStorage()开箱即用?我不明白我在这里错过了什么。 – coder

+0

它应该我刚刚尝试与您的数据集。数据集看起来也不错。但是由于你的错误,猪似乎无法解析数据。 –

+0

是的,我无法理解为什么。 – coder