나는 ',' 나이베바예스클라시퍼 사용하여 실행할 수 있는 간단한 hadoop 가져오는 이 오류
Exception in thread "main" java.io.IOException: No FileSystem for scheme: file
at org.apache.hadoop.fs.FileSystem.createFileSystem(FileSystem.java:1375)
at org.apache.hadoop.fs.FileSystem.access$200(FileSystem.java:66)
at org.apache.hadoop.fs.FileSystem$Cache.get(FileSystem.java:1390)
at org.apache.hadoop.fs.FileSystem.get(FileSystem.java:196)
at org.apache.hadoop.fs.FileSystem.get(FileSystem.java:95)
at org.apache.hadoop.fs.FileSystem.get(FileSystem.java:180)
at org.apache.hadoop.fs.Path.getFileSystem(Path.java:175)
at org.apache.mahout.classifier.naivebayes.NaiveBayesModel.materialize(NaiveBayesModel.java:100)
코드:
Configuration configuration = new Configuration();
NaiveBayesModel model = NaiveBayesModel.materialize(new Path(modelPath), configuration);// error in this line..
'모델파스' - '구성' 구성 '파일이므로 객체인지 인쇄면이 나이베베이즈.빈 향하고 있다. core-default.xml, core-site.xml '
그 때문에 내가 생각하는 점, 아무 생각 없어?
이것은 일반적인 경우 '' breaking 전지전능하심이라 메이븐 조립품을 플러그인에는
다른 jar ('hadoop 커먼즈' 는 '로카르피레시스템', 'hadoop hdfs' 는 '디스트리부테트피레시스템') 는 각각 다른 파일 '에서' 그들의 '컨테인먼트하는 오르조지아파체스하도로피프스트피레시스템 메타 정보를 / 서비스' 디렉터리입니다. 이 파일은 파일 시스템 구축 정식 classname 열거합니다 싶을 너희가운데 (이를 서비스 제공 인터페이스 통해 구축 ',' '제바스티우스제비셀로이더 지켜보리니 오르조지아파체스하도로퍼필레시스템' [선 2622] [1]).
우리가 사용하는 모든 jar 하나로, 이 때, 모든 '' 우리 '메이븐 조립품을 플러그인에는 병합합니다 meta-info/services/org.apache.hadoop.fs.filesystem' overwrite 서로. 이 중 하나만 남아 파일 (마지막 방정식입니다 추가되었다). 이 경우 '목록 "에서 hadoop 커먼즈 목록의 파일 시스템' '' '가 더 이상 디스트리부테트피레시스템 덮어씁니다 hadoop hdfs' 때문에 '했다.
Hadoop 파일 시스템 '이 아니라' 아무것도 하기 전에 로드중 구성 후 관련, 우리들은 이:
hadoopConfig.set("fs.hdfs.impl",
org.apache.hadoop.hdfs.DistributedFileSystem.class.getName()
);
hadoopConfig.set("fs.file.impl",
org.apache.hadoop.fs.LocalFileSystem.class.getName()
);
그동안 '나' 는 '내 눈길을 크룩드레이 메이븐 조립품을 사용할 수 있는 방법이 있다는 구성 기반 파일 시스템' 서비스 '모든' 병합되었습니다 버전니다 체크아웃하려고 선언, [그의 답변은] (https://stackoverflow.com/a/27532248/2442804 참조).
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-shade-plugin</artifactId>
<version>2.3</version>
<executions>
<execution>
<phase>package</phase>
<goals>
<goal>shade</goal>
</goals>
<configuration>
<transformers>
<transformer implementation="org.apache.maven.plugins.shade.resource.ServicesResourceTransformer"/>
</transformers>
</configuration>
</execution>
</executions>
</plugin>
이렇게 하면 모두 병합합니다 오르조지아파체스하도로피프스트피레시스템 서비스를 하나의 파일
저를 데리고 함께 살 수 있지만, 스파크 (spark) # 39 의 내 그림 아웃해야 2.0.2 here& 약어입니다:
val sparkBuilder = SparkSession.builder
.appName("app_name")
.master("local")
// Various Params
.getOrCreate()
val hadoopConfig: Configuration = sparkBuilder.sparkContext.hadoopConfiguration
hadoopConfig.set("fs.hdfs.impl", classOf[org.apache.hadoop.hdfs.DistributedFileSystem].getName)
hadoopConfig.set("fs.file.impl", classOf[org.apache.hadoop.fs.LocalFileSystem].getName)
내 '과 관련 부분을 부ild.스프트':
scalaVersion := "2.11.8"
libraryDependencies += "org.apache.spark" %% "spark-core" % "2.0.2"
이 도움이 될 수 있으면 좋겠다!
Hadoop, 여긴 아직 애디슨에게 발생하는 2.4.0. 그래서 답답한 것은.
내가 이 링크를 지침에 따라 수 있었습니다. http://grokbase.com/t/cloudera/scm-users/1288xszz7r/no-filesystem-for-scheme-hdfs
난 내 추가했어야 정보정의다음 core-site.xml 및 통했다.
<property>
<name>fs.file.impl</name>
<value>org.apache.hadoop.fs.LocalFileSystem</value>
<description>The FileSystem for file: uris.</description>
</property>
<property>
<name>fs.hdfs.impl</name>
<value>org.apache.hadoop.hdfs.DistributedFileSystem</value>
<description>The FileSystem for hdfs: uris.</description>
</property>
감사합니다, 스칼라 david_p
conf.set("fs.hdfs.impl", classOf[org.apache.hadoop.hdfs.DistributedFileSystem].getName);
conf.set("fs.file.impl", classOf[org.apache.hadoop.fs.LocalFileSystem].getName);
또는
<property>
<name>fs.hdfs.impl</name>
<value>org.apache.hadoop.hdfs.DistributedFileSystem</value>
</property>
사용하고 있는 것으로 마프너 및 클라우 데라 분포됩니다 hadoop. # 39 m, i& 사용하여 이러한 종속물과의 cdh4.6 및 추가 협력했습니다 for me. 내 생각엔 hadoop 및 마프너 종속물과의 버전을 확인해야 합니다.
<dependency>
<groupId>org.apache.hadoop</groupId>
<artifactId>hadoop-core</artifactId>
<version>2.0.0-mr1-cdh4.6.0</version>
</dependency>
<dependency>
<groupId>org.apache.hadoop</groupId>
<artifactId>hadoop-common</artifactId>
<version>2.0.0-cdh4.6.0</version>
</dependency>
<dependency>
<groupId>org.apache.hadoop</groupId>
<artifactId>hadoop-client</artifactId>
<version>2.0.0-cdh4.6.0</version>
</dependency>
<repository>
<id>cloudera</id>
<url>https://repository.cloudera.com/artifactory/cloudera-repos/</url>
</repository>
내가 사용하는 sbt 조립품을 패키지하지 내 프로젝트. 난 또 이 문제를 충족합니다. 내 솔루션이므로 여기 있습니다. Step1. meta-inf 마르크 에스트라다리지 in your 부ild.스프트 추가
case PathList("META-INF", "MANIFEST.MF") => MergeStrategy.discard
case PathList("META-INF", ps @ _*) => MergeStrategy.first
Step2: 추가 라이브러리를 hadoop hdfs 부ild.스프트
"org.apache.hadoop" % "hadoop-hdfs" % "2.4.0"
Step3: sbt 청소하십시오. sbt 조립품을
위의 내용은 희망을 도와주겠어
내가 solaris. 너회가 구축하십시오 사용하여 샘플링합니다 메이븐.
이 경우 무시하려면 중에 리소스에는 구축하십시오) 라고 한다.
다른 가능성은 없다 ',' hadoop-hdfs.jar classpath 에 # 39 don& 됩니다 하지만 이는 이미 낮은 확률. 이 경우 일반적으로 '상관' hadoop 클라이언트입니다. 수정하십시오 대안이 아니다.
다른 가능한 원인 (OPs 질문 자체가 표시되어도 doesn& 시달리는 이 # 39, t) 는 기본 구성 인스턴스입니다 만들 경우 해당 로드되지는 않습니다.
Configuration config = new Configuration(false);
또한 사용자 정의 구성 격지에서 추가할 경우 (예를 들어, 파일 시스템에서) 를 '구성' 조심 ' ()' 의 객체에는 재배케하여 오버로드할 아드리수르스 사용할 수 있습니다. 예를 들어 다음 문자열 (String) 를 사용하는 경우 '아드리수르스 Hadoop' 는 클래스 경로 리소스에만 지정할 수 있는 것을 전제로 하는 경우 로컬 파일 종료기 다음과 같습니다.
File configFile = new File("example/config.xml");
config.addResource(new Path("file://" + configFile.getAbsolutePath()));
내게 주어진 문제의 답을 내 에서 수리입니다 인해 뉴비니스 장비가 잘 걸렸다. 이것이 내가 지었지 경우 처음부터 어느 누구에게도 도움이 필요하다.
import org.apache.spark.SparkContext
import org.apache.spark.SparkConf
object MyObject {
def main(args: Array[String]): Unit = {
val mySparkConf = new SparkConf().setAppName("SparkApp").setMaster("local[*]").set("spark.executor.memory","5g");
val sc = new SparkContext(mySparkConf)
val conf = sc.hadoopConfiguration
conf.set("fs.hdfs.impl", classOf[org.apache.hadoop.hdfs.DistributedFileSystem].getName)
conf.set("fs.file.impl", classOf[org.apache.hadoop.fs.LocalFileSystem].getName)
스파크 (spark) 2.1 을 사용하고 있습니다.
저는 이 부분은 '내' 부ild.스프트
assemblyMergeStrategy in assembly := {
case PathList("META-INF", xs @ _*) => MergeStrategy.discard
case x => MergeStrategy.first
}
내가 동일한 문제에 직면했다. 내가 찾은 두 솔루션: (1) 편집하기를 jar 파일을 수동으로:
Jar 파일을 열고 있는 WinRar (또는 이와 유사한 툴과도). Gnu. orghttp://www. 메타 정보를 >. 서비스 및 편집 " org.apache.hadoop.fs.FileSystem"; 덧붙여:
org.apache.hadoop.fs.LocalFileSystem
(2) 로 내 종속물과의 준수하십시오 순서 변경
<dependencies>
<dependency>
<groupId>org.apache.hadoop</groupId>
<artifactId>hadoop-hdfs</artifactId>
<version>3.2.1</version>
</dependency>
<dependency>
<groupId>org.apache.hadoop</groupId>
<artifactId>hadoop-common</artifactId>
<version>3.2.1</version>
</dependency>
<dependency>
<groupId>org.apache.hadoop</groupId>
<artifactId>hadoop-mapreduce-client-core</artifactId>
<version>3.2.1</version>
</dependency>
<dependency>
<groupId>org.apache.hadoop</groupId>
<artifactId>hadoop-client</artifactId>
<version>3.2.1</version>
</dependency>
</dependencies>
//hadoop
lazy val HADOOP_VERSION = "2.8.0"
lazy val dependenceList = Seq(
//hadoop
//The order is important: "hadoop-hdfs" and then "hadoop-common"
"org.apache.hadoop" % "hadoop-hdfs" % HADOOP_VERSION
,"org.apache.hadoop" % "hadoop-common" % HADOOP_VERSION
)
난 또 여러 유사한 문제가 됐다. 또 core-site.xml 및 hdfs-site.xml 리소스로 (객체) 의 구성
Configuration conf = new Configuration(true);
conf.addResource(new Path("<path to>/core-site.xml"));
conf.addResource(new Path("<path to>/hdfs-site.xml"));
또한 갈등을 포마리스 레비 편집된 버전으로 (예를 들어 구성된 경우 버전니다 hadoop 은 2.8.1, 그러나 포m.1믈 2.7.1 버전 파일 변경 후, 의존성 2.8.1 것이 있다) 메이븐 실행하십시오 설치를 다시.
이 문제는 error: for me.
이 플러그인에는
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-shade-plugin</artifactId>
<version>1.5</version>
<executions>
<execution>
<phase>package</phase>
<goals>
<goal>shade</goal>
</goals>
<configuration>
<filters>
<filter>
<artifact>*:*</artifact>
<excludes>
<exclude>META-INF/*.SF</exclude>
<exclude>META-INF/*.DSA</exclude>
<exclude>META-INF/*.RSA</exclude>
</excludes>
</filter>
</filters>
<shadedArtifactAttached>true</shadedArtifactAttached>
<shadedClassifierName>allinone</shadedClassifierName>
<artifactSet>
<includes>
<include>*:*</include>
</includes>
</artifactSet>
<transformers>
<transformer
implementation="org.apache.maven.plugins.shade.resource.AppendingTransformer">
<resource>reference.conf</resource>
</transformer>
<transformer
implementation="org.apache.maven.plugins.shade.resource.ManifestResourceTransformer">
</transformer>
<transformer
implementation="org.apache.maven.plugins.shade.resource.ServicesResourceTransformer">
</transformer>
</transformers>
</configuration>
</execution>
</executions>
</plugin>