Domanda

Durante la scrittura di un lavoro di MapReduce (in particolare Hadoop se del caso), occorre definire un map() e un reduce() funzione, sia producendo una sequenza di coppie chiave/valore.I tipi di dati la chiave e il valore è libero di essere definiti dall'applicazione.

L'esempio canonico di conteggio delle parole, entrambe le funzioni resa coppie di tipo (string, int) con la chiave una parola e il valore di un conteggio delle occorrenze.Qui - così come in tutti gli altri esempi che ho visto - l'riprodotto chiave e i tipi di valore sono coerenti tra le due funzioni.

Deve/dovrebbe il tipo di coppia chiave/valore prodotto dal map() e reduce() essere la stessa all'interno di qualsiasi applicazione di MapReduce?Se sì:perché?

È stato utile?

Soluzione

No. Ovviamente, naturalmente, i tipi di coppie di output per la mappa e la coppia di ingressi di ridurre devono essere identici, poiché uno viene passato all'altro.

E 'molto probabile, tuttavia, che si potrebbe avere un compito di ridurre che l'output di un tipo diverso rispetto alle coppie di mappa che è venuto in - per esempio, se il compito mappa contato le parole in un documento, ma il compito di ridurre calcolato una parola media frequenza. In tal caso sarebbe mappa emettono interi ma ridurre sarebbe emettono i numeri in virgola mobile.

Altri suggerimenti

Mappa e Ridurre le uscite possono essere diverse.Ma è necessario dire l'applicazione che sono.Ecco come:

Il setOutputKeyClass() e setOutuptValueClass() metodi di controllo i tipi di output per la mappa e la riduzione di funzioni, che spesso sono gli stessi.

Nel caso In cui essi sono diversi, è possibile impostare la mappa di output chiavi/valori tipo setMapOutputKeyClass() e SetMapOutputValue rispettivamente.

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