2010-07-19 10 views
5

In Hadoop è possibile utilizzare il meccanismo di ordinamento secondario per ordinare i valori prima che vengano inviati al riduttore.Quale classe chiave è adatta per l'ordinamento secondario?

Il modo in cui viene eseguito in Hadoop è che si aggiunge il valore per l'ordinamento in base alla chiave e quindi alcuni metodi di confronto di gruppi e chiavi personalizzati che si agganciano al sistema di ordinamento.

Quindi è necessario disporre di una chiave che consiste essenzialmente nella chiave reale e nel valore da ordinare. Per fare in modo che ciò avvenga abbastanza velocemente ho bisogno di un modo per creare una chiave composita che sia anche facile da decomporre nelle parti separate necessarie per i metodi di confronto di gruppo e chiave.

Qual è il modo più intelligente per farlo. Esiste una classe Hadoop "pronta all'uso" che può aiutarmi in questo o devo creare una classe chiave separata per ogni fase di riduzione della mappa?

Come faccio se il tasto è effettivamente un composito costituito da più parti (necessario anche separatamente a causa del partizionatore)?

Cosa raccomandate voi ragazzi?

P.S. Volevo aggiungere il tag "secondary-sort" ma non ho ancora abbastanza rep per farlo.

+1

ci vai tu (ho aggiunto il tag) :-) –

+0

Grazie per aver aggiunto il tag :) –

+0

Non hai capito la tua domanda, ti dispiacerebbe aggiungere un breve esempio? – Sudarshan

risposta

0

È necessario modificare le chiavi modo ripartizionate e raggruppati, e thisbasicakly significa che si mette più di 1 tipo di dati nelle chiavi, tutta l'override del metodo di confronto per il partizionamento e il raggruppamento ....

-È possibile serializzare/deserializzare le chiavi e gestire i dati di input come oggetti o bean se si desidera un codice fortemente scritto e robusto per l'ordinamento secondario ...

-per scenari più semplici, basta inserire un segno "#" tra i valori!

C'è un grande articolo di alto livello su questo qui:

http://pkghosh.wordpress.com/2011/04/13/map-reduce-secondary-sort-does-it-all/

1

stavo correndo in questa situazione tutto il tempo e stancarsi di scrivere classi principali composite personalizzate. Ho scritto una classe Tuple generica che è una lista di oggetti e può agire come una chiave composita. L'elenco può contenere un numero arbitrario di oggetti di tipi di wrapper primitivi Java. Implementa WritableComparable. La sorgente può essere vista qui

https://github.com/pranab/chombo/blob/master/src/main/java/org/chombo/util/Tuple.java

0

avevo una situazione in cui i doveva ordinare i dati su due colonne, uno era tipo stringa e un altro era tipo integer. Ho scritto il mio custom WritableComparable e, in confronto, ho scritto la mia logica. In realtà è un modo migliore dal mio punto di vista, dal momento che possiamo personalizzare la nostra logica di selezione.

Problemi correlati