2012-11-02 19 views
12

C# ile yazılmış mapper ve indirici yürütülebilir dosyaları var. Bunları Hadoop akışı ile kullanmak istiyorum.C# ve Mono ile Hadoop akışı: Yanlış kullanılan IdentityMapper

Bu Bu, her haritacının karşılaşılan hatadır

hadoop jar $HADOOP_HOME/contrib/streaming/hadoop-streaming-*.jar 
-input "/user/hduser/ss_waits" 
-output "/user/hduser/ss_waits-output" 
–mapper "mono mapper.exe" 
–reducer "mono reducer.exe" 
-file "mapper.exe" 
-file "reducer.exe" 

Ben Hadoop işi oluşturmak için kullanıyorum komut ... ...

java.io.IOException: Type mismatch in key from map: expected org.apache.hadoop.io.Text, recieved org.apache.hadoop.io.LongWritable 
at org.apache.hadoop.mapred.MapTask$MapOutputBuffer.collect(MapTask.java:1014) 
at org.apache.hadoop.mapred.MapTask$OldOutputCollector.collect(MapTask.java:592) 
at org.apache.hadoop.mapred.lib.IdentityMapper.map(IdentityMapper.java:38) 
at org.apache.hadoop.mapred.MapRunner.run(MapRunner.java:50) 
at org.apache.hadoop.mapred.MapTask.runOldMapper(MapTask.java:436) 
at org.apache.hadoop.mapred.MapTask.run(MapTask.java:372) 
at org.apache.hadoop.mapred.Child$4.run(Child.java:255) 
at java.security.AccessController.doPrivileged(Native Method) 
at javax.security.auth.Subject.doAs(Subject.java:415) 
at org.apache.hadoop.security.UserGroupInformation.doAs(UserGroupInformation.java:1121) 
at org.apache.hadoop.mapred.Child.main(Child.java:249) 

çağırma dayanarak olduğunu yığın, sorun (Java) IdentityMapper sınıfının mapper olarak kullanılmakta olduğu görünmektedir. (Hangi tür uyumsuzluk hatası neden oluştuğunu açıklar). Eşleştirici, "mono mapper.exe" çalıştırılabilir olmalıdır.

mono mapper.exe neden herhangi bir fikir kullanılmıyor?

mapper.exe Reducer.exe sahip aşağıdaki izinleri: -rwxr-xr-x

başarıyla unix komut kabuğu mono mapper.exe yürütmek mümkün ve o metinde okumak zorunda Stdin'den ve stdout'a yaz.

Ortamı:

  • Ubuntu Sunucu 12.04 LTS (VM Azure'de üzerinde çalışan)
  • Hadoop'un 1.0.4
  • Mono 2,10
+0

Önemsiz bir öneri: Eğer birden fazla satır genelinde iş gönderme komutu bölme ediyorsanız, her satırdan (son hariç) sonunda \ yazıyorsun? – Douglas

+0

Ayrıca şunu deneyebilirsiniz: sarma komut dosyasını (http://www.mono-project.com/Guide:Running_Mono_Applications#Shell_Scripts) oluşturun veya grup oluşturun (http://www.mono-project.com/Guide:Running_Mono_Applications#Bundles) –

cevap

1

varsayıldığında mono- yapmak yolu ile birlikte mapper.exe ve reducer.exe dosyasının tam yoluna ihtiyacınız var mı? yani

hadoop jar $HADOOP_HOME/contrib/streaming/hadoop-streaming-*.jar 
-input "/user/hduser/ss_waits" 
-output "/user/hduser/ss_waits-output" 
–mapper "mono /path/to/mapper.exe" 
–reducer "mono /path/to/reducer.exe" 
-file "mapper.exe" 
-file "reducer.exe"