2012-06-14 10 views
11

Penso che il titolo stia già spiegando la mia domanda. Vorrei cambiareHadoop: chiave e valore sono separati da tabulazione nel file di output. come si fa a separare il punto e virgola?

key (tab space) value 

in

key;value 

in tutti i file di output i riduttori stanno generando dall'uscita del mapper.

Non sono riuscito a trovare una buona documentazione su questo utilizzando google. Qualcuno può per favore dare una frazione di codice su come raggiungere questo obiettivo?

+0

quale versione (0.20.2, 0.20.20x, 1.0.x, 2.0.0?) E distro (Apache, Cloudera?) di hadoop stai usando –

+0

Cosa stai usando come classe del formato di output: 'oahmapred.TextOutputFormat', o' oahmapreduce.lib.output.TextOutputFormat'? –

risposta

18

Impostare la proprietà di configurazione mapred.textoutputformat.separator a ";"

+0

Ciao Chris..è tutto ok per quello che ho specificato ??? – Tariq

+1

dovrebbe essere mapreduce.output.textoutputformat.separator se stai usando la nuova API – Tariq

+0

1.0.0 mostra ancora 'mapred.textoutputformat.separator' nella sua origine per' oahmapreduce.lib.output.TextOutputFormat' - http: // svn.apache.org/viewvc/hadoop/common/tags/release-1.0.0/src/mapred/org/apache/hadoop/mapreduce/lib/output/TextOutputFormat.java?view=markup, riga 115 –

1

è possibile utilizzare proprietà "KEY_VALUE_SEPERATOR" di "KeyValueLineRecordReader" per specificare un separatore di vostra scelta.

+1

Questa proprietà può essere impostata durante la lettura dei dati, ma non viene utilizzata per l'output –

+0

grazie Chris. – Tariq

14

In mancanza di documentazione migliore, ecco quello che ho raccolto:

setTextOutputFormatSeparator(final Job job, final String separator){ 
      final Configuration conf = job.getConfiguration(); //ensure accurate config ref 

      conf.set("mapred.textoutputformat.separator", separator); //Prior to Hadoop 2 (YARN) 
      conf.set("mapreduce.textoutputformat.separator", separator); //Hadoop v2+ (YARN) 
      conf.set("mapreduce.output.textoutputformat.separator", separator); 
      conf.set("mapreduce.output.key.field.separator", separator); 
      conf.set("mapred.textoutputformat.separatorText", separator); // ? 
    }