scheme没有文件系统:null

vx6bjr1n  于 2021-06-03  发布在  Hadoop
关注(0)|答案(2)|浏览(507)

我正在尝试使用“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)行;任何帮助都将不胜感激。谢谢!:)

xqk2d5yq

xqk2d5yq1#

您不需要在作业中指定文件系统实现,除非您不想重写某些内容。
集群配置文件在哪里(hdfs-site.xml、core-site.xml等)
确保hadoop\u conf\u dir环境变量指向它们,并且它们配置正确。
fs.defaultfs属性的配置是什么?

tpgth1q7

tpgth1q72#

我也遇到了类似的问题,并且花了很多时间来调试这个问题。在我的例子中,我在windows上使用sparkmlib,代码主要是
sparksess=sparksession.builder.appname(“..”).config(“spark.master”,“local[*])。。。。
sparksess.createDataFrame(..)
解析是spark.local.dir和spark.sql.warehouse.dir,在spark会话生成器中应该以特定的格式为windows指定路径,比如///d:/sparkworkdir。希望可以节省一些时间

相关问题