2017-10-13 2 views
0

In meinem hadoop Programmierung Minderer Ausgabename in hadoop für Partition ändern Ich möchte Namen benutzerdefinierte Ausgabe liefern für das Reduktions hier sagen lässtWie kann ich

import java.io.IOException; 
import org.apache.hadoop.conf.Configuration; 
import org.apache.hadoop.io.IntWritable; 
import org.apache.hadoop.io.Text; 
import org.apache.hadoop.mapreduce.Job; 
import org.apache.hadoop.mapreduce.Partitioner; 

public class Partitionclass extends Partitioner<Text, IntWritable>{ 



    @Override 
    public int getPartition(Text key, IntWritable value, int numreducetasks){ 
     // TODO Auto-generated method stub 
     Job job=null; 
     Configuration conf=new Configuration(); 
     try { 
      job = Job.getInstance(conf, "word count"); 
     } catch (IOException e) { 
      // TODO Auto-generated catch block 
      e.printStackTrace(); 
     } 
     if(numreducetasks==2) 
     { 
      String partkey=key.toString(); 
      int val=Integer.parseInt(partkey); 
      if(val%2==0) 
      { 
       //System.out.println("Even"+val); 
       job.getConfiguration().set("mapreduce.output.basename", "Even"); 
       return 0; 


      } 
      else 
      { 
       job.getConfiguration().set("mapreduce.output.basename", "Odd"); 
       return 1; 

      } 
     } 
     else if(numreducetasks==1) 


     return 0; 
     else 
      System.out.println("Please give reduce task at least one"); 
     return -1; 
    } 

} 

ich es durch Treiberklasse versucht, den Code-Schnipsel, sondern Es dint Arbeit, also erstelle ich Auftrag für in der Partitionsklasse, aber funktioniert noch nicht. Ich will Ausgabedateiname wie Sagen für ungerades Odd-r-00000 und für Gerade, Even-r-00001. Kann irgendeinen bitte sagen Sie mir genau, wie Darf ich das machen.

Antwort