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)?
1. Ja, sowohl hadoop-common.jar als auch hadoop-hdfs.jar. 2 – Zelong
2) Verwenden Sie Play Framework, um die Abhängigkeiten aufzulösen. – Zelong
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