2012-11-02 21 views
12

मैं नक्शाकार और कम करने निष्पादनयोग्य सी # में लिखा है इस्तेमाल किया जा रहा। मैं Hadoop स्ट्रीमिंग के साथ इन का उपयोग करना चाहते।Hadoop स्ट्रीमिंग: IdentityMapper गलत तरीके से

यह आदेश मैं Hadoop काम बनाने के लिए उपयोग कर रहा हूँ ...

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" 

यह प्रत्येक नक्शाकार द्वारा सामना की त्रुटि है ...

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) 

कॉल के आधार पर है ढेर, समस्या यह प्रतीत होती है कि (जावा) पहचान मैपर वर्ग का उपयोग मैपर के रूप में किया जा रहा है। (जो बताता है कि टाइप मिस्चैच त्रुटि क्यों हुई थी)। नक्शाकार निष्पादन "मोनो mapper.exe" किया जाना चाहिए था।

कोई विचार क्यों mono mapper.exe का उपयोग नहीं किया जा रहा है?

mapper.exe और reducer.exe है निम्न अनुमतियों: -rwxr-XR-x

मैं सफलतापूर्वक यूनिक्स कमांड शेल से मोनो mapper.exe निष्पादित करने में सक्षम हूँ और यह पाठ में पढ़ा है stdin से और stdout लिखो।

पर्यावरण:

  • उबंटू सर्वर 12.04 LTS (VM Azure पर चल रहा है)
  • Hadoop 1.0.4
  • मोनो 2,10
+0

एक मामूली सुझाव: यदि आप अपनी नौकरी सबमिशन कमांड को कई पंक्तियों में विभाजित कर रहे हैं, तो क्या आप प्रत्येक पंक्ति के अंत में (आखिरी के अलावा) लिख रहे हैं? – Douglas

+0

तुम भी कोशिश कर सकते हैं: रैपिंग लिपि (http://www.mono-project.com/Guide:Running_Mono_Applications#Shell_Scripts) बना सकते हैं या बंडल (बनाने http://www.mono-project.com/Guide:Running_Mono_Applications#Bundles) –

उत्तर

1

मान लिया जाये कि मोनो पथ में है, करना आपको mapper.exe और reducer.exe के लिए पूरा पथ चाहिए? यानी

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" 
संबंधित मुद्दे