我正在尝试运行一个jar (maven项目)使用"hadoop -jar“,我得到一个错误"No FileSystem for scheme”。我一直在阅读有关堆栈溢出的这个错误,似乎问题出在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.HarFileSystemHDFS线路丢失。这是我的代码的一部分:
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)行;如果有任何帮助,我们将不胜感激。谢谢!:)
发布于 2015-09-11 14:04:31
您不需要在作业中指定文件系统实现,除非您不想覆盖某些内容。
您的集群配置文件在哪里?(hdfs-site.xml、core-site.xml等)
请确保您的HADOOP_CONF_DIR环境变量指向它们,并且它们已正确配置。
您的fs.defaultFS属性配置是什么?
发布于 2018-04-04 11:28:54
我遇到了类似的问题,花了很多时间尝试通过问题进行调试。在我的例子中,我在windows上使用的是spark mlib,代码主要是
sparksess = SparkSession.builder.appName("..").config("spark.master","local*)....
sparksess.creatDataFrame(..)
解决方案是spark会话构建器中的spark.local.dir和spark.sql.warehouse.dir应该以windows的特定格式指定路径,比如/D:/sparkworkdir。希望为某人节省了一些时间
https://stackoverflow.com/questions/32454214
复制相似问题