Quali sono i vantaggi dell'utilizzo di chiavi/valori utilizzando null
testi (ad esempio new Text(null)
). Vedo quanto segue dal libro «Hadoop: The Definitive Guide».Vantaggi dell'utilizzo di NullWritable in Hadoop
NullWritable
è un tipo speciale diWritable
, in quanto ha una serializzazione a lunghezza zero. Nessun byte viene scritto o letto dallo stream. È usato come segnaposto; ad esempio, in MapReduce, una chiave o un valore può essere dichiarato comeNullWritable
quando non è necessario utilizzare per memorizzare la posizione in modo efficace. NullWritable può anche essere utile come chiave inSequenceFile
quando si desidera memorizzare un elenco di valori, al contrario di per coppie chiave-valore. Si tratta di un Singleton immutabile: l'istanza può essere recuperata chiamandoNullWritable.get()
Non capisco chiaramente come l'output è scritto utilizzando NullWritable
? Sarà presente un singolo valore costante nel file di output iniziale che indica che le chiavi oi valori di questo file sono null
, in modo che il framework MapReduce possa ignorare la lettura delle chiavi/valori null
(a seconda di quale sia null
)? Inoltre, come sono effettivamente serializzati i testi null
?
Grazie,
Venkat
Grazie per la vostra tempo e risposta. Ora capisco come funziona NullWritable. Per quanto riguarda il testo nullo, mi dispiace, volevo parlare di avere chiavi/valori come testo e quindi fare un context.write (null, value) (si assuma che la chiave sia testo). –
Ciò dovrebbe anche generare una NullPointerException. chiavi e valori null non funzionano. Se hai veramente bisogno di una chiave o di un valore nullo, dovresti prendere in considerazione qualche altra rappresentazione per questo, come una stringa vuota o -1. –
'contesto.write (null, value) 'funzionerà in realtà per alcuni formati di output (TextOutputFormat ad esempio produrrà solo il valore senza la chiave e il delimitatore configurato) –