Come conservare gli oggetti complessi in Hadoop HBase?
-
28-09-2019 - |
Domanda
Non ho oggetti complessi con i campi di raccolta che dovevano essere conservati a Hadoop. Non voglio passare per albero intero oggetto e memorizzare in modo esplicito ogni campo. Così Penso solo sulla serializzazione di campi complessi e memorizzarlo come un grande pezzo. E di desirialize quando la lettura oggetto. Allora, qual è il modo migliore per farlo? Ho pensato di usare un qualche tipo serilization per questo, ma spero che Hadoop ha i mezzi per gestire questa situazione.
La classe di oggetto di esempio per negozio:
class ComplexClass {
<simple fields>
List<AnotherComplexClassWithCollectionFields> collection;
}
Soluzione
HBase tratta solo con array di byte, in modo da poter serializzare l'oggetto in qualsiasi modo si vede in forma.
Il metodo standard Hadoop di serializzazione di oggetti è implementare l'interfaccia org.apache.hadoop.io.Writable
. Poi si può serializzare l'oggetto in un array di byte utilizzando org.apache.hadoop.io.WritableUtils.toByteArray(Writable ... writable)
.
Inoltre, ci sono altri framework di serializzazione che le persone nell'uso comunità di Hadoop, come Avro, buffer protocollo, e la parsimonia. Tutti hanno i loro casi d'uso specifici, in modo da fare la tua ricerca. Se stai facendo qualcosa di semplice, attuazione scrivibile di Hadoop dovrebbe essere abbastanza buono.