没有用于scheme的FileSystem:null

时间:2015-09-08 09:35:22

标签: java maven hadoop hdfs

我正在尝试使用“hadoop -jar”运行jar(maven项目),我收到错误“No FileSystem for scheme”。我一直在阅读stackoverflow上的这个错误,似乎问题出在META-INF / services / org.apache.hadoop.fs.FileSystem中。我看起来像这样:

org.apache.hadoop.fs.LocalFileSystem
org.apache.hadoop.fs.viewfs.ViewFileSystem
org.apache.hadoop.fs.ftp.FTPFileSystem
org.apache.hadoop.fs.HarFileSystem

缺少HDFS线。 这是我的代码的一部分:

public int run(String[] args) throws Exception {   
     Configuration conf=getConf();    conf.set("fs.hdfs.impl",org.apache.hadoop.hdfs.DistributedFileSystem.class.getName());       conf.set("fs.file.impl",org.apache.hadoop.fs.LocalFileSystem.class.getName()); 
       args = new GenericOptionsParser(conf, args).getRemainingArgs();       
     Job job = Job.getInstance(conf,"Count");
     job.setInputFormatClass(ImageBundleInputFormat.class);
     job.setMapperClass(CountMapper.class);
     job.setReducerClass(CountReducer.class);
     job.setMapOutputKeyClass(IntWritable.class);
     job.setMapOutputValueClass(IntWritable.class);
     job.setOutputKeyClass(IntWritable.class);
     job.setOutputValueClass(Text.class);
     FileInputFormat.setInputPaths(job, new Path(args[0]));
     FileOutputFormat.setOutputPath(job, new Path(args[1]));
     job.addCacheFile(new URI("//path/lbpcascade_frontalcatface.xml"));
     job.setJarByClass(Count.class);
     boolean success = job.waitForCompletion(true);
     return success ? 0 : 1;
   }

public static void main(String[] args) throws Exception {


       ToolRunner.run(new Count(), args);
       System.exit(0);
   }

错误在行boolean success = job.waitForCompletion(true); 任何帮助,将不胜感激。谢谢! :)

2 个答案:

答案 0 :(得分:0)

您不需要在工作中指定文件系统实现,除非您不想覆盖某些内容。

您的群集配置文件在哪里? (hdfs-site.xml,core-site.xml等)

确保您的HADOOP_CONF_DIR环境变量指向它们并且它们已正确配置。

fs.defaultFS 属性的配置是什么?

答案 1 :(得分:0)

我遇到了类似的问题,花了很多时间尝试调试问题。在我的情况下,我在Windows上使用spark mlib,代码主要是

sparksess = SparkSession.builder.appName(“..”)。config(“spark.master”,“local [*])....

sparksess.creatDataFrame(..)

解决方案是spark会话构建器中的spark.local.dir和spark.sql.warehouse.dir应该为窗口指定特定格式的路径,例如/// D:/ sparkworkdir为我工作。希望能节省一些时间