2015-10-04 76 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