Ich bin neu in Hadoop und Java. Ich versuche, die Anzahl der Dateien in einem HDFS-Ordner aus dem MapReduce-Treiber zu ermitteln, den ich gerade schreibe. Ich möchte dies tun, ohne die HDFS-Shell aufzurufen, da ich das Verzeichnis weitergeben möchte, das ich benutze, wenn ich den MapReduce-Job ausführe. Ich habe eine Reihe von Methoden ausprobiert, hatte aber keinen Erfolg bei der Implementierung Unerfahrenheit mit Java.
Jede Hilfe würde sehr geschätzt werden.
Vielen Dank,
Nomade.
Antworten:
2 für die Antwort № 1Sie können einfach das Dateisystem verwenden und über die Dateien innerhalb des Pfades iterieren. Hier ist ein Beispielcode
int count = 0;
FileSystem fs = FileSystem.get(getConf());
boolean recursive = false;
RemoteIterator<LocatedFileStatus> ri = fs.listFiles(new Path("hdfs://my/path"), recursive);
while (ri.hasNext()){
count++;
ri.next();
}