Ich habe ein Problem versucht, ein Verzeichnis von meinem lokalen System zu HDFS mit Java-Code zu kopieren. Ich bin in der Lage, einzelne Dateien zu verschieben, kann aber keine Möglichkeit finden, ein ganzes Verzeichnis mit Unterordnern und Dateien zu verschieben. Kann mir jemand dabei helfen? Danke im Voraus.Kopieren des Verzeichnisses vom lokalen System zum hdfs Java-Code
Antwort
Verwenden Sie einfach die FileSystem
copyFromLocalFile Methode. Wenn der Quellpfad ein lokales Verzeichnis ist, wird es auf das HDFS Ziel kopiert werden:
...
Configuration conf = new Configuration();
conf.addResource(new Path("/home/user/hadoop/conf/core-site.xml"));
conf.addResource(new Path("/home/user/hadoop/conf/hdfs-site.xml"));
FileSystem fs = FileSystem.get(conf);
fs.copyFromLocalFile(new Path("/home/user/directory/"),
new Path("/user/hadoop/dir"));
...
der Pfad für hdfs, die ich zur Verfügung stelle, hat die Form "hdfs: //cluster.abc.com: 8080/user/something", aber es sagt "falsche FS, erwartete Datei: ///". Irgendwelche Hilfe dafür? – Chirag
Welchen Wert haben Sie in core-site.xml für fs.default.name? Es sollte auf hdfs zeigen: // host [: port] –
danke. fs.default.name auf den benötigten hdfs: // host: port eingestellt. – Chirag
Hier ist der vollen Arbeits Code zu lesen und in zu HDFS zu schreiben. Es braucht zwei Argumente
Eingangspfad (local/HDFS)
Ausgabepfad (HDFS)
I Cloudera Sandbox verwendet.
package hdfsread;
import java.io.BufferedInputStream;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.URI;
import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.fs.FileSystem;
import org.apache.hadoop.fs.Path;
import org.apache.hadoop.io.IOUtils;
public class ReadingAFileFromHDFS {
public static void main(String[] args) throws IOException {
String uri = args[0];
InputStream in = null;
Path pt = new Path(uri);
Configuration myConf = new Configuration();
Path outputPath = new Path(args[1]);
myConf.set("fs.defaultFS","hdfs://quickstart.cloudera:8020");
FileSystem fSystem = FileSystem.get(URI.create(uri),myConf);
OutputStream os = fSystem.create(outputPath);
try{
InputStream is = new BufferedInputStream(new FileInputStream(uri));
IOUtils.copyBytes(is, os, 4096, false);
}
catch(IOException e){
e.printStackTrace();
}
finally{
IOUtils.closeStream(in);
}
}
}
Hallo, wenn ich dieses versuche, erhalte ich org/apache/hadoop/fs/FSDataOutputStream Fehler. Ich habe hadoop-common, hadoop-hdfs-Bibliotheken zu meinem Pom hinzugefügt. und fügte auch core-site.xml, hdfs-site.xml zu meiner Konfiguration hinzu. – user4342532
- 1. Pfad des lokalen Verzeichnisses
- 2. Sperren eines Verzeichnisses in HDFS
- 3. Hortonworks Practice Exam - Datei vom lokalen Rechner nach hdfs kopieren FEHLER
- 4. scp vom Remote-Host zum lokalen Host
- 5. Wie erhalten und betrachten Sie Oracle BLOB (Image) -Daten von HDFS zum lokalen System?
- 6. Erläuterung zum Abrufen des gewünschten Verzeichnisses
- 7. Tinymce plugins laden von cdn anstelle des lokalen Verzeichnisses
- 8. Assemblys zum Erstellen eines Verzeichnisses mit MSBuild-Task kopieren
- 9. Ordner vom iPhone kopieren Ressourcenverzeichnis zum Dokumentenverzeichnis
- 10. Visual Studio 2010: CopyDirectory oder xcopy zum Kopieren des gesamten Verzeichnisses
- 11. Java-Code zum Suchen aller .doc- und .docx-Dateien vom lokalen System
- 12. Wie kann man web.config vom Durchsuchen des Verzeichnisses ausblenden?
- 13. Verschieben des Google Cloud SDK-Verzeichnisses
- 14. So kopieren Sie ein Verzeichnis vom lokalen Computer zum Remote-Computer
- 15. Benötigen Sie Hilfe beim Kopieren einer Datei vom lokalen Rechner zum entfernten Rechner mit Java
- 16. Daten vom lokalen Computer
- 17. Inhalt eines Verzeichnisses in ein anderes kopieren
- 18. Docker Kopieren der Datei vom Host zum Container
- 19. PHP Name des aktuellen Verzeichnisses
- 20. Kopieren und entpacken von S3 nach HDFS
- 21. Wann ändert hdfs Zugriffszeit und Änderungszeit eines Verzeichnisses?
- 22. Auswählen des richtigen Lucene-Verzeichnisses
- 23. Objekt vom Eclipse-Debugger kopieren
- 24. Abrufen des übergeordneten Verzeichnisses des Skripts
- 25. Limit-Größe des Cache-Verzeichnisses
- 26. Kopieren von Datei von HDFS auf lokale Maschine
- 27. Kopieren von Dateien von meinem lokalen Dateisystem nach HDFS mit Flume
- 28. Kopieren Verzeichnisse in HDFS mit der JAVA API
- 29. Verwenden von FileSystemWatcher zum Überwachen eines Verzeichnisses
- 30. Zweig vom lokalen Arbeitsbereich
Welche Version von Hadoop verwenden Sie? 'bin/hadoop dfs-copyFromLocal Ordner' kopiert 'Ordner' und rekursiv alles darin für mich in Ordnung. –
weil das Verzeichnis keine 'Datei' ist. Sie sollten das Verzeichnis rekursiv erstellen und die Datei einzeln verschieben (wenn Sie möchten, können Sie das auch parallel tun). Natürlich sollten Sie sich bewusst sein, dass diese Operation nicht atomar ist, wenn Sie also versagen, bleiben einige Dateien auf hdfs stehen. – octo