Схемаға арналған FileSystem жоқ файл: file

Мен қате кодты іске асыруға тырыстым, NaiveBayesClassifer .

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..

modelPath is pointing to NaiveBayes.bin file, and configuration object is printing - Configuration: core-default.xml, core-site.xml

Мен оны банкалардан, кез-келген идеялардан деп ойлаймын ба?

72
@emile ұсынғандай, jaro-ді java емес, hadoop арқылы іске қосқаныңызға көз жеткізіңіз. яғни «жай jaro-jar» орындауға тырысқанның орнына «waxoop jar» -пен бөлінген банкті ғана іске қосыңыз. »
қосылды автор matthieu lieber, көзі
Қосымша ақпарат қажет ...
қосылды автор Tariq, көзі
Hmm..Сіздің ортаңыз туралы айтып бересіз бе? Сондай-ақ, маған толығымен ерекшелік хабарын көрсетіңіз.
қосылды автор Tariq, көзі
java-jar test.jar орнына hadoop jar test.jar қолданды
қосылды автор Manindar, көзі
ModelPath мәні қайда? Сіз file: /// path/to/dir файлын қолдандыңыз ба?
қосылды автор Chris White, көзі
Өз-өзімді білмеймін, бірақ google-ге жылдам қарау сіз ұсынғандай сілтеме жасалмайтын банктердің айналасында кейбір мәселелер бар екенін көрсетеді. Мүмкін, келесі сілтемелер жауап береді. groups.google.com/a/cloudera. org/forum/#! topic/scm-users/& hellip; grokbase.com/t/cloudera/cdh-user/134r64jm5t/…
қосылды автор Emile, көзі
Мен hadoop-common-2.0.0-cdh4.3.0-sources.jar және hadoop-core-0.20.2.jar сынып жолына қосып отырдым, алдымен жойылдым және ол неге екенін білмедім.
қосылды автор Mahender Singh, көзі

16 жауаптар

Бұл maven-assembly плагинін бұзатын заттардың типтік мысалы.

Неге бұл бізбен болды?

Әртүрлі JARs ( LocalFileSystem үшін hadoop-commons , DistributedFileSystem үшін hadoop-hdfs ) әрқайсысында < META-INFO/services каталогында org.apache.hadoop.fs.FileSystem кодын келтіріңіз. Бұл файл жариялауды қалайтын файлдық жүйенің енгізілуінің канондық сынып атауын тізімдейді (бұл java.util.ServiceLoader арқылы орындалатын қызмет провайдері интерфейсі деп аталады) org.apache.hadoop.FileSystem line 2622 ).

maven-assembly-plugin қолданған кезде, барлық JAR-ді біреуіне біріктіреді және барлық META-INFO/services/org.apache.hadoop.fs.FileSystem әрбір - басқалары. Бұл файлдардың тек біреуі (соңғы қосылған) қалады. Бұл жағдайда hadoop-commons fileSystem тізімінен 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 қызметтерінің декларациясы. pom.xml файлына келесі плагинді қосыңыз:


  org.apache.maven.plugins
  maven-shade-plugin
  2.3
  
    
      package
      
        shade
      
      
        <transformers>
          <transformer implementation="org.apache.maven.plugins.shade.resource.ServicesResourceTransformer"/>
        
      
    
  

138
қосылды
Іс жүзінде, мен осы көкжиекке тәуелділік пен қатені шешу үшін http://mvnrepository.com/artifact/org.apache.hadoop/hadoop-h‌ dfs/2.2.0 қосылдым.
қосылды автор B.Mr.W., көзі
Бұл бұзу. Төменде қабылданған жауап болуы керек!
қосылды автор Adam Arold, көзі
I've hadoop-hdfs, hadoop-core, hadoop-common, hadoop-клиентін қосып көрдім, Aslo addoopConfig.set («fs.hdfs.impl», org.apache.hadoop.hdfs.DistributedFileSystem.class.getName() ); hadoopConfig.set («fs.file.impl», org.apache.hadoop.fs.LocalFileSystem.class.getName ()); бірақ жұмыс істемей тұрса, оның тұтылудан шыққан кезде оның жұмыс істеп жатқаны жақсы, бірақ java -cp командасынан іске қосқан кезде қатенің үстінде көрсетіледі
қосылды автор Harish Pathak, көзі
Рақмет сізге. Жауапыңыз менің сағатымды сақтады.
қосылды автор Hamdi, көзі
Осыған бөліскеніңіз үшін рақмет, бұл пайдалы болды.
қосылды автор D_K, көзі
Adam Arold жаңартуына рахмет, мен жауапты жаңарттым.
қосылды автор david_p, көзі
@david_p қайда біз оны атауымыз керек? Ifin defibrer class болса, бин/hdfs dfs -ls/somefile-ді пайдалана отырып, ouput-ды көрген кезде, онда не болады /
қосылды автор Mandrek, көзі
Хариш, сіз не көрдіңіз? Мұнда бір проблема бар, бірақ intellij
қосылды автор ThommyH, көзі
Керемет жауапқа толықтыру: егер тек hoodoop JARS-ді қолданатын болсаңыз, бірақ жұмыссыз емес кластерде жұмыс істейтін болса, «» «hadoopConfig.set (» fs.hdfs.impl ..... «» «» Бұл жағдайда біз құрастыруды басқаруды қалпына келтіреміз, мысалы, sbt-де біріктіруді жүзеге асыра аламыз, немесе тіпті сүзгіштік сызығы
қосылды автор bigdatamann, көзі
Spark-те бірдей нәрсені жасау үшін қажетті коды бар: val hadoopConfig: Конфигурация = spark.hadoopConfiguration hadoopConfig.set («fs.hdfs.impl», classOf [org.apache.hadoop.hdfs.DistributedFileSystem] .getNam & zwnj ; E) hadoopConfig.set («fs.file.impl», classOf [org.apache.hadoop.fs.LocalFileSystem] .getName)
қосылды автор Philip O., көзі

Көлеңке плагинін пайдаланатындар үшін, david_p кеңестеріне сүйене отырып, қызметтерді көлеңкелі банкке ServicesResourceTransformer бағдарламасын плагин теңшеліміне қосу арқылы біріктіруге болады:

  
    org.apache.maven.plugins
    maven-shade-plugin
    2.3
    
      
        package
        
          shade
        
        
          <transformers>
            <transformer implementation="org.apache.maven.plugins.shade.resource.ServicesResourceTransformer"/>
          
        
      
    
  

Бұл бір файлда барлық орг.apache.hadoop.fs.FileSystem қызметтерін біріктіреді

50
қосылды
Мәссаған! Сіз маған 4 сағаттық бас скретингін өткіздіңіз! Бұл қабылданған жауап болуы керек!
қосылды автор Adam Arold, көзі
Маған бұл шешім ұнайды. Мәселені түпнұсқадағы (құрылыста) түзетіп, оны кейін конфигурация өзгеруімен түзетпеңіз.
қосылды автор Kevin Pauli, көзі
Үлкен жауап. Менің қателігім қате болды. Maven-assembly-plugin, сондай-ақ maven-jar-plugin/maven-dependency-plugin комбинациясын қолдануға тырысты, бірақ жұмыс істемеді. Бұл шешім менің Spark қосымшасын жасады. Көп рақмет!
қосылды автор somnathchakrabarti, көзі
Өте жақсы жауап.
қосылды автор Niranjan Subramanian, көзі
Бұл қабылданған жауап ретінде белгіленуі керек. ServicesResourceTransformer META-INF/services каталогын қолдану арқылы jar файлдары интерфейстерін іске асыру үшін қажет. Қосымша ақпаратты мына жерден таба аласыз: maven.apache .org/plugins/maven-көлеңкелі-плагин/мысалдар/& hellip;
қосылды автор Mario, көзі
Үлкен жауап! Көп рақмет!
қосылды автор andrea.lagala, көзі
Үлкен рахмет, өте пайдалы!
қосылды автор mwol, көзі
Магеннің орнына банктерді таңдағанда оны қалай пайдалануға болады?
қосылды автор rafarossi, көзі

thanks david_p, scala

conf.set("fs.hdfs.impl", classOf[немесеg.apache.hadoop.hdfs.DistributedFileSystem].getName);
conf.set("fs.file.impl", classOf[немесеg.apache.hadoop.fs.LocalFileSystem].getName);

немесе


 fs.hdfs.impl
 немесеg.apache.hadoop.hdfs.DistributedFileSystem

7
қосылды
Тек осылай оқығаннан кейін, conf мұнда Hadoop конфигурациясы екенін түсіндім: brucebcampbell.wordpress.com/2014/12/11/& hellip;
қосылды автор Sal, көзі

Жазба үшін, бұл әлі де 2.4.0-де болған. Өте өкінішті ...

I was able to follow the instructions in this link: http://grokbase.com/t/cloudera/scm-users/1288xszz7r/no-filesystem-for-scheme-hdfs

Мен өзімнің core-site.xml-ге мыналарды қостым және ол жұмыс істеді:


   fs.file.impl
   org.apache.hadoop.fs.LocalFileSystem
   The FileSystem for file: uris.



   fs.hdfs.impl
   org.apache.hadoop.hdfs.DistributedFileSystem
   The FileSystem for hdfs: uris.

7
қосылды

Мені Spark 2.0.2 көмегімен түсіну үшін жас алды, бірақ бұл менің битім:

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)

Және build.sbt туралы тиісті бөлімдер:

scalaVersion := "2.11.8"
libraryDependencies += "org.apache.spark" %% "spark-core" % "2.0.2"

Бұл көмектесуі мүмкін деп үміттенемін!

6
қосылды

Maven үшін, тек hauoop-hdfs (төмендегі сілтемеге сілтеме) үшін maven тәуелділігін қосу мәселені шешеді.

http://mvnrepository.com/artifact/org.apache.hadoop /hadoop-hdfs/2.7.1

5
қосылды
бұл мен үшін жұмыс істеді
қосылды автор sdk, көзі

Мен жобаны жинау үшін sbt жинағын қолданамын. Мен де осы мәселеге жауап беремін. Менің шешімім осында. 1-қадам: build.sbt сайтында META-INF біріктіру стратегиясын қосыңыз

case PathList("META-INF", "MANIFEST.MF") => MergeStrategy.discard
case PathList("META-INF", ps @ _*) => MergeStrategy.first

2-қадам: addoop-hdfs lib to build.sbt қосыңыз

"org.apache.hadoop" % "hadoop-hdfs" % "2.4.0"

Step3: sbt таза; sbt жинағы

Жоғарыда келтірілген ақпарат сізге көмектесе алады деп үміттенеміз.

4
қосылды
Рахмет @ravwojdyla, өте ұқыпты шешім. Сіз менің шашымды сақтадыңыз. Жоғалған жандар үшін бұл жауапты Apache ұшқыны үшін ашты. Бұл sbt-assembly кезде build.sbt қосыңыз, дұрыс жұмыс істейді.
қосылды автор Greedy Coder, көзі
case PathList («META-INF», «services», «org.apache.hadoop.fs.FileSystem») => MergeStrategy.filterDistinctLines сияқты біріктіруге болады. тіркелген файлдық жүйелер
қосылды автор ravwojdyla, көзі
@Ravwojdyla ұсынған шешім мен үшін жұмыс істейтін жалғыз ғана.
қосылды автор Sergey Kovalev, көзі
@Ravwojdyla ұсынған шешім өте қолайлы. Мен build.sbt-те осындай баптаулар жасадым және қолдандым: `` assemblyMergeStrategy жиналыста: = {case PathList («META-INF», «MANIFEST.MF») => MergeStrategy.discard case PathList («META-INF» «Қызметтер», «org.apache.hadoop.fs.FileSystem») => MergeStrategy.concat case _ => MergeStrategy.first} ``
қосылды автор bigdatamann, көзі

Мысалы, сіз moody және cloudera үлестірілімін қолданасыз деп есептейсіз. Мен cdh4.6-ды қолданып, мен үшін жұмыс істейтін осы тәуелділіктерді қосып жатырмын. Менің ойымша, сіз hadoop және mvn тәуелділіктерінің нұсқаларын тексеру керек деп ойлаймын.


        org.apache.hadoop
        hadoop-core
        2.0.0-mr1-cdh4.6.0
    

    
        org.apache.hadoop
        hadoop-common
        2.0.0-cdh4.6.0
    

    
        org.apache.hadoop
        hadoop-client
        2.0.0-cdh4.6.0
    

cloudera mvn репозиторийін қосуды ұмытпаңыз.


        cloudera
        https://repository.cloudera.com/artifactory/cloudera-repos/

4
қосылды

Мен сізге Maven көмегімен үлгіні салуды болжай аламын.

Сіз іске қосқыңыз келген JAR мазмұнын тексеріңіз. Әсіресе META-INFO/services каталогы, org.apache.hadoop.fs.FileSystem файлында. Флипсистеманы енгізу сыныптары тізімі болуы керек. org.apache.hadoop.hdfs.DistributedFileSystem жолын тексеру жергілікті файл схемасы үшін HDFS және org.apache.hadoop.fs.LocalFileSystem тізімінде болады.

Мұндай жағдайда, құрылыста аталған ресурсты қайта жазуыңыз керек.

Басқа мүмкіндіктер сіздің класс жолында hadoop-hdfs.jar жоқ, бірақ бұл ықтималдығы аз. Әдетте сізде hadoop-client тәуелділігі болса, бұл опция емес.

2
қосылды
HI Романда осындай мәселе бар және META-INFO/services/org.apache.hadoop.fs.FileSystem жүйесінде hdfs сызығы жоқ. Менде тек 2.0.0-mr1-cdh4.4.0 бар. Не істеуім керек? Бұл туралы кез-келген құжаттама? Объектіні құру үшін Maven пайдалану
қосылды автор sethi, көзі

Тағы бір ықтимал себеп (ОС мәселесі өзінен өзі де зардап шексе де), сіз әдепкі мәндерді жүктемейтін конфигурация данасын жасасаңыз:

Configuration config = new Configuration(false);

Егер әдепкі мәндерді жүктемесеңіз, онда HDFS-ке кіру кезінде ұқсас қателіктерге әкелетін FileSystem енгізу сияқты нәрселер үшін әдепкі параметрлерді алмайсыз. Бұл параметрді әдепкі мәндерді жүктеу үшін true ішіндегі параметрсіз конструкторға ауысу мұны шешуі мүмкін.

Сонымен қатар, сіз өзіңіздің конфигурациялау орныңызды (мысалы, файлдық жүйеде) Configuration нысанына қосып жатсаңыз, сіз қолданатын addResource() -тың жүктемесіне мұқият болыңыз. Мысалы, егер сіз addResource (String) қолдансаңыз, Hadoop бұл жолы сынып жолының ресурсы деп есептейді, егер сізге жергілікті файлды көрсету қажет болса, мына әрекетті орындап көріңіз:

File configFile = new File("example/config.xml");
config.addResource(new Path("file://" + configFile.getAbsolutePath()));
2
қосылды

Біраз уақыттан бері бұл сұрақтың жауабын түзуім керек болды, себебі менің жаңа өмірім болды. Міне, мен басынан бастап, кез келген адамға көмек керек болса,

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 пайдаланамын

And I have this part in my build.sbt

assemblyMergeStrategy in assembly := {
  case PathList("META-INF", xs @ _*) => MergeStrategy.discard
  case x => MergeStrategy.first
}
1
қосылды

Бұл плагинді пайдаланыңыз


                org.apache.maven.plugins
                maven-shade-plugin
                1.5
                
                    
                        package
                        
                            shade
                        

                        
                            
                                
                                    *:*
                                    
                                        META-INF/*.SF
                                        META-INF/*.DSA
                                        META-INF/*.RSA
                                    
                                
                            
                            true
                            allinone
                            
                                
                                    *:*
                                
                            
                            <transformers>
                                <transformer
                                    implementation="org.apache.maven.plugins.shade.resource.AppendingTransformer">
                                    reference.conf
                                
                                <transformer
                                    implementation="org.apache.maven.plugins.shade.resource.ManifestResourceTransformer">
                                
                                <transformer 
                                implementation="org.apache.maven.plugins.shade.resource.ServicesResourceTransformer">
                                
                            
                        
                    
                
            
1
қосылды
Configuration conf = new Configuration();
conf.set("fs.defaultFS", "hdfs://nameNode:9000");
FileSystem fs = FileSystem.get(conf);

set fs.defaultFS мен үшін жұмыс істейді! Hadoop-2.8.1

1
қосылды

Мен сондай-ақ осындай мәселеге тап болдым. Conf (object) ресурсы ретінде core-site.xml және hdfs-site.xml қосылды

Configuration conf = new Configuration(true);    
conf.addResource(new Path("/core-site.xml"));
conf.addResource(new Path("/hdfs-site.xml"));

Сондай-ақ, pom.xml нұсқасындағы қақтығыстар өңделді. (мыс: ifoop нұсқасы конфигурацияланған болса 2.8.1, бірақ pom.xml файлында тәуелділіктерде 2.7.1 нұсқасы бар, содан кейін оны 2.8.1 дейін өзгертіңіз) Maven орнатуды қайта іске қосыңыз.

Бұл мен үшін қатені шешті.

0
қосылды

SBT төменде біріктіру стратегиясын build.sbt сайтында пайдалану үшін

mergeStrategy in assembly <<= (mergeStrategy in assembly) { (old) => {
    case PathList("META-INF", "services", "org.apache.hadoop.fs.FileSystem") => MergeStrategy.filterDistinctLines
    case s => old(s)
  }
}
0
қосылды

sbt қолданып жатсаңыз:

//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
)
0
қосылды