2012-11-20 11 views
8

Azaltılmış çıktı dosyalarında, Anahtar ve Değer arasındaki ayırıcı olarak^A kullanmayı deniyorum. Ben yapılandırma ayarı "mapred.textoutputformat.separator" ne istiyorum olduğunu buldum ve bu doğru ayırıcı için "" geçer:Hadoop - textouputformat.separator kullanımı ctrlA (^ A)

conf.set("mapred.textoutputformat.separator", ","); 

Ama^A karakteri işleyemez:

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 "&#

bu fişi https://issues.apache.org/jira/browse/HADOOP-7542 buldular ve tri bkz:

conf.set("mapred.textoutputformat.separator", "\u0001"); 
bu hatayı atar Bunu düzeltmek için ama XML1.1 endişeleri nedeniyle yama geri döndü.

Şüphesiz, birisinin kolay bir çalışma kullanarak, ayırıcıyı^A'ya (oldukça yaygın görünüyor) ayarlayarak başarılı olup olmadığını merak ediyorum. Ya da sadece tab ayırıcısını yerleştirip kullanmalıyım.

Teşekkürler!

Ben ben bu sorunun çözümü için bulduğum üç seçenek belki var gibi görünüyor etrafında Looking CentOS 6.2

+2

Tekrar et, geçerli bir soru, teşvik edilmeli. – Siddharth

cevap

4

tarihinde Hadoop 0.20.2-cdh3u5 çalıştırıyorum:

olası çözümleri soru şunlardır:

  1. Base64, ayırıcı karakterini kodlayabilirsiniz. Daha sonra getRecordWriter yöntemini geçersiz kılan ve Base64 kodlu ayırıcıyı çözen özel bir TextOutputFormat oluşturmanız gerekir.
  2. Bir sekmedeki varsayılan ayırıcı karakteri değiştirmek dışında özel bir TextOutputFormat yeniden oluşturun.
  3. Sınırlayıcıyı bir XML kaynak dosyası aracılığıyla sağlayın. İş yapılandırmasının addResource() yöntemini kullanarak özel bir kaynak dosyası belirtebilirsiniz.
+0

Teşekkürler BN. # 3 en temiz yaklaşıma benziyor. Bunu bir atış yapacağım. –