Hadoop - textouputformat.separator Verwenden Sie ctrlA (^ A)

8

Ich versuche, ^ A als Trennzeichen zwischen Schlüssel und Wert in meinen reduzierten Ausgabedateien zu verwenden. Ich habe festgestellt, dass die Konfigurationseinstellung "mapred.textoutputformat.separator" genau das ist, was ich möchte, und dies schaltet das Trennzeichen korrekt auf ",":

%Vor%

Aber es kann nicht mit dem ^ A-Zeichen umgehen:

%Vor%

löst diesen Fehler aus:

ERROR security.UserGroupInformation: PriviledgedActionException as:user (auth:SIMPLE) cause:org.apache.hadoop.ipc.RemoteException: java.io.IOException: java.lang.RuntimeException: org.xml.sax.SAXParseException; lineNumber: 68; columnNumber: 94; Character reference "&#

Ich habe dieses Ticket Ссылка gefunden und gesehen, dass sie versucht haben, dies zu beheben, aber das Patch aufgrund von XML1 zurückgesetzt haben .1 Bedenken.

SO frage ich mich, ob jemand Erfolg gehabt hat, das Trennzeichen auf ^ A zu setzen (scheint ziemlich üblich), mit einer einfachen Arbeit herum. Oder wenn ich einfach abrechnen und Tabulator verwenden soll.

Danke!

Ich betreibe Hadoop 0.20.2-cdh3u5 auf CentOS 6.2

    
alexP_Keaton 20.11.2012, 02:35
quelle

1 Antwort

4

Beim Umschauen sieht es so aus, als gäbe es vielleicht drei Optionen, die ich zur Lösung dieses Problems gefunden habe:

Die möglichen Lösungen wie im obigen Link beschrieben sind:

  1. Sie können Base64 das Trennzeichen codieren. Sie müssen dann ein benutzerdefiniertes TextOutputFormat erstellen, das die getRecordWriter-Methode überschreibt und das Base64-codierte Trennzeichen decodiert.
  2. Erstellen Sie erneut ein benutzerdefiniertes TextOutputFormat, außer dass Sie das Standardtrennzeichen aus einer Registerkarte ändern.
  3. Geben Sie das Trennzeichen über eine XML-Ressourcendatei an. Sie können eine benutzerdefinierte Ressourcendatei mit der Methode addResource () der Jobs Konfiguration angeben.
Binary Nerd 20.11.2012, 03:56
quelle