Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/hadoop/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java PIG/Hadoop问题:错误2081:无法设置加载函数_Java_Hadoop_Apache Pig - Fatal编程技术网

Java PIG/Hadoop问题:错误2081:无法设置加载函数

Java PIG/Hadoop问题:错误2081:无法设置加载函数,java,hadoop,apache-pig,Java,Hadoop,Apache Pig,我运行的是Pig 0.13.0和Hadoop 2.5.1,都是从Apache发行版安装的,它们不是来自Horton或Cloudera的软件包 我正在使用一个教程,在本地运行Pig($>。/Pig-x local)时可以让它正常工作,但在Hadoop实例上尝试运行它时,我遇到了一个错误,我在internet上进行研究时遇到了困难 此命令: movies = LOAD '/home/hduser/pig-tutorial-master/movies_data.csv' USING PigStorag

我运行的是Pig 0.13.0和Hadoop 2.5.1,都是从Apache发行版安装的,它们不是来自Horton或Cloudera的软件包

我正在使用一个教程,在本地运行Pig(
$>。/Pig-x local
)时可以让它正常工作,但在Hadoop实例上尝试运行它时,我遇到了一个错误,我在internet上进行研究时遇到了困难

此命令:

movies = LOAD '/home/hduser/pig-tutorial-master/movies_data.csv' USING PigStorage(',') as (id,name,year,rating,duration);
DUMP movies;
在本地运行时工作良好。当我在Hadoop/MR模式下运行它时,当我运行第一行代码时,它似乎工作正常:

grunt> movies = LOAD '/home/hduser/pig-tutorial-master/movies_data.csv' USING PigStorage(',') as (id,name,year,rating,duration);
2014-10-29 18:16:26,281 [main] INFO  org.apache.hadoop.conf.Configuration.deprecation - fs.default.name is deprecated. Instead, use fs.defaultFS
2014-10-29 18:16:26,281 [main] INFO  org.apache.hadoop.conf.Configuration.deprecation - mapred.job.tracker is deprecated. Instead, use mapreduce.jobtracker.address
但当我尝试
$>转储电影时
会给出以下跟踪:

grunt> dump movies
2014-10-29 18:17:15,419 [main] INFO  org.apache.pig.tools.pigstats.ScriptState - Pig features used in the script: UNKNOWN
2014-10-29 18:17:15,420 [main] INFO  org.apache.pig.newplan.logical.optimizer.LogicalPlanOptimizer - {RULES_ENABLED=[AddForEach, ColumnMapKeyPrune, GroupByConstParallelSetter, LimitOptimizer, LoadTypeCastInserter, MergeFilter, MergeForEach, PartitionFilterOptimizer, PushDownForEachFlatten, PushUpFilter, SplitFilter, StreamTypeCastInserter], RULES_DISABLED=[FilterLogicExpressionSimplifier]}
2014-10-29 18:17:15,445 [main] WARN  org.apache.pig.data.SchemaTupleBackend - SchemaTupleBackend has already been initialized
2014-10-29 18:17:15,469 [main] ERROR org.apache.pig.tools.grunt.Grunt - ERROR 2081: Unable to setup the load function.
Details at logfile: /usr/local/pig/pig_1414606194436.log
错误2081是我试图诊断的,但找不到任何有助于我指出正确方向的东西。你知道从哪里开始吗?我想这与我的Hadoop安装有关,而不是Pig,但我不知道。任何建议都会有帮助

谢谢

标记

编辑:以下是完整的日志输出:

ERROR 2081: Unable to setup the load function.

org.apache.pig.impl.logicalLayer.FrontendException: ERROR 1066: Unable to open iterator for alias movies
    at org.apache.pig.PigServer.openIterator(PigServer.java:912)
    at org.apache.pig.tools.grunt.GruntParser.processDump(GruntParser.java:752)
    at org.apache.pig.tools.pigscript.parser.PigScriptParser.parse(PigScriptParser.java:372)
    at org.apache.pig.tools.grunt.GruntParser.parseStopOnError(GruntParser.java:228)
    at org.apache.pig.tools.grunt.GruntParser.parseStopOnError(GruntParser.java:203)
    at org.apache.pig.tools.grunt.Grunt.run(Grunt.java:66)
    at org.apache.pig.Main.run(Main.java:542)
    at org.apache.pig.Main.main(Main.java:156)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:606)
    at org.apache.hadoop.util.RunJar.main(RunJar.java:212)
Caused by: org.apache.pig.PigException: ERROR 1002: Unable to store alias movies
    at org.apache.pig.PigServer.storeEx(PigServer.java:1015)
    at org.apache.pig.PigServer.store(PigServer.java:974)
    at org.apache.pig.PigServer.openIterator(PigServer.java:887)
    ... 12 more
Caused by: org.apache.pig.backend.executionengine.ExecException: ERROR 0: Exception while executing (Name: movies: Store(hdfs://localhost:54310/tmp/temp-1276361014/tmp-2000190966:org.apache.pig.impl.io.InterStorage) - scope-1 Operator Key: scope-1): org.apache.pig.backend.executionengine.ExecException: ERROR 2081: Unable to setup the load function.
    at org.apache.pig.backend.hadoop.executionengine.physicalLayer.PhysicalOperator.processInput(PhysicalOperator.java:289)
    at org.apache.pig.backend.hadoop.executionengine.physicalLayer.relationalOperators.POStore.getNextTuple(POStore.java:143)
    at org.apache.pig.backend.hadoop.executionengine.fetch.FetchLauncher.runPipeline(FetchLauncher.java:160)
    at org.apache.pig.backend.hadoop.executionengine.fetch.FetchLauncher.launchPig(FetchLauncher.java:81)
    at org.apache.pig.backend.hadoop.executionengine.HExecutionEngine.launchPig(HExecutionEngine.java:275)
    at org.apache.pig.PigServer.launchPlan(PigServer.java:1367)
    at org.apache.pig.PigServer.executeCompiledLogicalPlan(PigServer.java:1352)
    at org.apache.pig.PigServer.storeEx(PigServer.java:1011)
    ... 14 more
Caused by: org.apache.pig.backend.executionengine.ExecException: ERROR 2081: Unable to setup the load function.
    at org.apache.pig.backend.hadoop.executionengine.physicalLayer.relationalOperators.POLoad.getNextTuple(POLoad.java:127)
    at org.apache.pig.backend.hadoop.executionengine.physicalLayer.PhysicalOperator.processInput(PhysicalOperator.java:281)
    ... 21 more
Caused by: org.apache.hadoop.mapreduce.lib.input.InvalidInputException: Input path does not exist: hdfs://localhost:54310/home/hduser/pig-tutorial-master/movies_data.csv
    at org.apache.hadoop.mapreduce.lib.input.FileInputFormat.singleThreadedListStatus(FileInputFormat.java:321)
    at org.apache.hadoop.mapreduce.lib.input.FileInputFormat.listStatus(FileInputFormat.java:264)
    at org.apache.pig.backend.hadoop.executionengine.mapReduceLayer.PigTextInputFormat.listStatus(PigTextInputFormat.java:36)
    at org.apache.hadoop.mapreduce.lib.input.FileInputFormat.getSplits(FileInputFormat.java:385)
    at org.apache.pig.impl.io.ReadToEndLoader.init(ReadToEndLoader.java:190)
    at org.apache.pig.impl.io.ReadToEndLoader.<init>(ReadToEndLoader.java:146)
    at org.apache.pig.backend.hadoop.executionengine.physicalLayer.relationalOperators.POLoad.setUp(POLoad.java:95)
    at org.apache.pig.backend.hadoop.executionengine.physicalLayer.relationalOperators.POLoad.getNextTuple(POLoad.java:123)
    ... 22 more
================================================================================
错误2081:无法设置加载功能。
org.apache.pig.impl.logicalLayer.FrontendException:错误1066:无法打开alias电影的迭代器
位于org.apache.pig.PigServer.openIterator(PigServer.java:912)
位于org.apache.pig.tools.grunt.GruntParser.processDump(GruntParser.java:752)
位于org.apache.pig.tools.pigscript.parser.PigScriptParser.parse(PigScriptParser.java:372)
位于org.apache.pig.tools.grunt.GruntParser.parsetoponerror(GruntParser.java:228)
位于org.apache.pig.tools.grunt.GruntParser.parsetoponerror(GruntParser.java:203)
位于org.apache.pig.tools.grunt.grunt.run(grunt.java:66)
位于org.apache.pig.Main.run(Main.java:542)
位于org.apache.pig.Main.Main(Main.java:156)
在sun.reflect.NativeMethodAccessorImpl.invoke0(本机方法)处
在sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)中
在sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)中
位于java.lang.reflect.Method.invoke(Method.java:606)
位于org.apache.hadoop.util.RunJar.main(RunJar.java:212)
原因:org.apache.pig.PigException:错误1002:无法存储别名电影
位于org.apache.pig.PigServer.storeEx(PigServer.java:1015)
位于org.apache.pig.PigServer.store(PigServer.java:974)
位于org.apache.pig.PigServer.openIterator(PigServer.java:887)
... 还有12个
原因:org.apache.pig.backend.executionengine.ExecuteException:错误0:执行时异常(名称:movies:Store)(hdfs://localhost:54310/tmp/temp-1276361014/tmp-2000190966:org.apache.pig.impl.io.InterStorage)-scope-1操作员键:scope-1):org.apache.pig.backend.executionengine.ExecutionException:错误2081:无法设置加载函数。
位于org.apache.pig.backend.hadoop.executionengine.physicalLayer.PhysicalOperator.processInput(PhysicalOperator.java:289)
位于org.apache.pig.backend.hadoop.executionengine.physicalayer.relationalOperators.POStore.getNextTuple(POStore.java:143)
位于org.apache.pig.backend.hadoop.executionengine.fetch.FetchLauncher.runPipeline(FetchLauncher.java:160)
位于org.apache.pig.backend.hadoop.executionengine.fetch.FetchLauncher.launchPig(FetchLauncher.java:81)
位于org.apache.pig.backend.hadoop.executionengine.HExecutionEngine.launchPig(HExecutionEngine.java:275)
位于org.apache.pig.PigServer.launchPlan(PigServer.java:1367)
位于org.apache.pig.PigServer.executeCompiledLogicalPlan(PigServer.java:1352)
位于org.apache.pig.PigServer.storeEx(PigServer.java:1011)
... 14多
原因:org.apache.pig.backend.executionengine.ExecuteException:错误2081:无法设置加载函数。
位于org.apache.pig.backend.hadoop.executionengine.physicalLayer.relationalOperators.POLoad.getNextTuple(POLoad.java:127)
位于org.apache.pig.backend.hadoop.executionengine.physicalLayer.PhysicalOperator.processInput(PhysicalOperator.java:281)
... 还有21个
原因:org.apache.hadoop.mapreduce.lib.input.InvalidInputException:输入路径不存在:hdfs://localhost:54310/home/hduser/pig-教程母版/movies\u data.csv
位于org.apache.hadoop.mapreduce.lib.input.FileInputFormat.singleThreadedListStatus(FileInputFormat.java:321)
位于org.apache.hadoop.mapreduce.lib.input.FileInputFormat.listStatus(FileInputFormat.java:264)
位于org.apache.pig.backend.hadoop.executionengine.mapReduceLayer.PigTextInputFormat.listStatus(PigTextInputFormat.java:36)
位于org.apache.hadoop.mapreduce.lib.input.FileInputFormat.getSplits(FileInputFormat.java:385)
位于org.apache.pig.impl.io.ReadToEndLoader.init(ReadToEndLoader.java:190)
位于org.apache.pig.impl.io.ReadToEndLoader。(ReadToEndLoader.java:146)
位于org.apache.pig.backend.hadoop.executionengine.physicalLayer.relationalOperators.POLoad.setUp(POLoad.java:95)
位于org.apache.pig.backend.hadoop.executionengine.physicalLayer.relationalOperators.POLoad.getNextTuple(POLoad.java:123)
... 还有22个
================================================================================

如果您使用的是hadoop 2.6.0和pig 0.14
将pig降级至0.13可能会有所帮助。这对我很有用。

如果您正在hadoop集群上从grunt shell运行pig命令,请设置以下属性: 设置opt.fetch为false


通过设置上述属性dump将在mapreduce模式下运行,默认情况下,上述属性设置为true

在搜索错误2081的解决方案后,我开始更仔细地查看日志文件中的错误。这是一个试图从MR模式访问本地文件的问题。我在文档中没有注意到关于如何在MR vs.Local中访问数据的任何内容,但这就是问题所在。如果在MR中运行,则必须通过hdfs://hostname:54310. 在本地,您可以使用路径访问它们。这个S.O.问题是我的解决方案:。对于那些在这里寻找此帖子的人来说,这是一个很好的解决方案。