2016-06-06 3 views
0

habe ich versucht, mit Java API wie dem folgenden Code HDFS Datei zugreifen:Ausnahmen in HDFS-Dateisystem in Java Zugriff auf

import org.apache.hadoop.fs.FileSystem; 
import org.apache.hadoop.conf.Configuration; 
import org.apache.hadoop.fs.Path; 
import org.apache.hadoop.fs.FSDataInputStream; 

public static void main(args[]) { 
    Configuration conf = new Configuration(); 
    conf.addResource(new Path("/etc/hadoop/conf/core-site.xml")); 
    conf.addResource(new Path("/etc/hadoop/conf/hdfs-site.xml")); 

    try { 
     Path path = new Path("hdfs://mycluster/user/mock/test.txt"); 
     FileSystem fs = FileSystem.get(path.toUri(), conf); 
     if (fs.exists(path)) { 
      FSDataInputStream inputStream = fs.open(path); 
      // Process input stream ... 
     } 
     else 
      System.out.println("File does not exist"); 
    } catch (IOException e) { 
     System.out.println(e.getMessage()); 

Eine Ausnahme trat bei FileSystem.get(path.toUri(), conf) sagen, dass Couldn't create proxy provider class org.apache.hadoop.hdfs.server.namenode.ha.ConfiguredFailoverProxyProvider die durch java.lang.NoClassDefFoundError: Could not initialize class org.apache.hadoop.security.Credentials verursacht wird.

Ich habe nicht viele Informationen über den Fehler gefunden. Liegt das Problem an der falschen API (org.apache.hadoop.hdfs anstelle von)?

Antwort

0

1) Haben Sie die hadoop-hdfs-.jar in Ihrem Klassenpfad verfügbar?

2) Wie lade ich die Abhängigkeiten herunter? Maven/Manual/Other

3) Könnten Sie bitte den StackTrace bereitstellen?

+0

1. Ja, sowohl hadoop-common.jar als auch hadoop-hdfs.jar. 2 – Zelong

+0

2) Verwenden Sie Play Framework, um die Abhängigkeiten aufzulösen. – Zelong

+0

Die Klasse ConfiguredFailoverProxyProvider sollte in Ihrer hadoop-hdfs.jar verfügbar sein. Könnten Sie bitte überprüfen, ob es verfügbar ist. Wenn es verfügbar ist, überprüfen Sie, ob dieses JAR in Ihrem Build-Pfad hinzugefügt wurde. Wenn beide oben genannten Fall adressiert ist, sollte es nicht verursachen NoClassDefFoundError – Makubex