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;


}
È stato utile?

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.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top