Ho un file sequenziale che è l'output del lavoro di riduzione della mappa di hadoop. In questo file i dati sono scritti in coppie di valori chiave e il valore stesso è una mappa. Voglio leggere il valore come oggetto MAP in modo che possa elaborarlo ulteriormente.Come leggere il file sequenziale di hadoop?
Configuration config = new Configuration();
Path path = new Path("D:\\OSP\\sample_data\\data\\part-00000");
SequenceFile.Reader reader = new SequenceFile.Reader(FileSystem.get(config), path, config);
WritableComparable key = (WritableComparable) reader.getKeyClass().newInstance();
Writable value = (Writable) reader.getValueClass().newInstance();
long position = reader.getPosition();
while(reader.next(key,value))
{
System.out.println("Key is: "+textKey +" value is: "+val+"\n");
}
output del programma: Key è: [questo è la chiave] valore è: {abc = 839.177, xyz = 548.498, LMN = 2, PQR = 1} valore
Qui sto ottenendo come stringa , ma lo voglio come oggetto di mappa.
Da dove viene 'val' da? E una mappa non è "scrivibile", cosa stai usando per le lezioni nel tuo lavoro di m/r? –
Ho solo il file sequenziale e non sono a conoscenza di cosa stanno facendo nella mappa ridurre il lavoro.E vengono fornite le seguenti informazioni. "Ogni file di questo tipo deve essere aperto come un file di sequenza. È necessario utilizzare un codec decompressione - la classe del file di sequenza sembra essere in grado di dire a quale codec di compressione usare, e quindi penso che ogni chiave e ogni valore sia codificato usando TypedBytes. " – samarth
Quindi devi ottenere le classi della chiave e dei valori, altrimenti non li deserializzi correttamente. –