栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

Java hadoop没有用于方案的文件系统:file

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Java hadoop没有用于方案的文件系统:file

这是

maven-assembly
插件破坏事情的典型情况。

为什么这发生在我们身上
不同的JAR(

hadoop-commonsfor LocalFileSystem,hadoop-hdfsfor DistributedFileSystem
)各自
org.apache.hadoop.fs.FileSystem在其meta-INFO/services
目录中包含一个不同的文件。该文件列出了要声明的文件系统实现的规范类名(这称为通过实现的服务提供者接口
java.util.ServiceLoader
,请参见
org.apache.hadoop.FileSystem#loadFileSystems
)。

当使用时

maven-assembly-plugin
,它将所有的JAR合并为一个,并且全部
meta-INFO/services/org.apache.hadoop.fs.FileSystem
覆盖彼此。这些文件仅保留其中一个(添加的最后一个)。在这种情况下,
FileSystemfrom
的列表将
hadoop-commons
覆盖from 的列表
hadoop-hdfs
,因此
DistributedFileSystem
不再声明。

我们如何解决它

在加载Hadoop配置之后,但在进行任何

FileSystem
相关操作之前,我们将其称为:

    hadoopConfig.set("fs.hdfs.impl",         org.apache.hadoop.hdfs.DistributedFileSystem.class.getName()    );    hadoopConfig.set("fs.file.impl",        org.apache.hadoop.fs.LocalFileSystem.class.getName()    );

更新:正确的修复
引起我注意的是krookedking,有一种基于配置的方法可以maven-assembly使用所有FileSystem服务声明的合并版本



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/414953.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号