Ich habe eine Datei, die Java serialisierte Objekte wie "Vector" enthält. Ich habe diese Datei über Hadoop Distributed File System (HDFS) gespeichert. Jetzt beabsichtige ich, diese Datei (mit der Methode readObject) in einer der Map-Tasks zu lesen. Ich nehmeFileInputStream für ein generisches Dateisystem
FileInputStream in = new FileInputStream("hdfs/path/to/file");
wird nicht funktionieren, wie die Datei über HDFS gespeichert wird. Also dachte ich an die org.apache.hadoop.fs.FileSystem Klasse. Aber leider hat es keine Methode, die FileInputStream zurückgibt. Alles, was es hat, ist eine Methode, die FSDataInputStream zurückgibt, aber ich möchte einen Inputstream, der serialisierte Java-Objekte wie Vektor aus einer Datei lesen kann und nicht nur primitive Datentypen, die FSDataInputStream tun würde.
Bitte helfen!
Schön, dass gearbeitet konvertieren! Danke – Akhil
Mit CDH5 ergibt dies einen Fehler. 'fcont = hfs.FileContext.getFileContext(); f = fcont.open (hfs.Path ('/ tmp/test.txt')); ois = java.io.ObjectInputStream (f); ' java.io.StreamCorruptedException: java.io.StreamCorruptedException: ungültiger Stream-Header: 6C6F6700 – Andor
@Andor: Ich habe die gleiche Ausnahme bekommen und habe versucht, eine Lösung zu finden, seit ein paar Tagen, ohne Glück . Konnten Sie herausfinden, wo das Problem lag? – Aditya