2016-08-06 7 views
0

Ich habe Map-Datei, die mit DefaultCodec Block komprimiert ist. Die Map-Datei wird von Java-Anwendung wie folgt erstellt:Wie lese ich die Hadoop-Map-Datei mit Python?

MapFile.Writer writer = 
      new MapFile.Writer(conf, path, 
        MapFile.Writer.keyClass(IntWritable.class), 
        MapFile.Writer.valueClass(BytesWritable.class), 
        MapFile.Writer.compression(SequenceFile.CompressionType.BLOCK, new DefaultCodec())); 

Diese Datei in hdfs gespeichert ist, und ich brauche einige Schlüssel, Werte von dem in einer anderen Anwendung mit Python zu lesen. Ich kann keine Bibliothek finden, die das kann. Hast du einen Vorschlag und ein Beispiel?

Dank

Antwort

0

Ich würde mit Funken vorzuschlagen, die eine Funktion namens Textdatei() hat, welche Dateien von HDFS lesen kann und sie in RDDs zur Weiterverarbeitung mit anderen Spark-Bibliotheken machen.

Hier ist die Dokumentation: Pyspark

+0

Können Sie ein Beispiel mit Lesewert liefern basiert auf einem System Schlüssel von einem MapFile? Ich kann es in den Dokumenten nicht finden. Es scheint, dass die Dokumentation nicht für MapFile gilt. –

0

einen Leser wie folgt erstellen:

path = '/hdfs/path/to/file' 
key = LongWritable() 
value = LongWritable() 
reader = MapFile.Reader(path) 
while reader.next(key, value): 
     print key, value 

Schauen Sie sich diese hadoop.io.MapFile Python examples

Und available methods in MapFile.py

+0

Ich habe versucht, es zu benutzen, und ich kann es nicht lesen. Ich habe diesen Fehler: Keine solche Datei oder Verzeichnis: 'hdfs: // myserver: 9000/tmp/mapfile/data'. Ich sah Code und es verwendet: os.path.join (Verzeichnisname, DATA_FILE_NAME) Es sieht aus wie es nur lokale Kartendatei lesen kann. Nicht das in hdfs. Kannst du es von hdfs lesen? Können Sie mehr Hilfe anbieten? –