2017-10-13 10 views
0

Dans ma programmation Hadoop Je veux fournir le nom de sortie personnalisé pour le réducteur permet de dire ici est l'extrait de codeComment puis-je changer le nom de sortie du réducteur pour la partition dans Hadoop

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; 
    } 

} 

Je l'ai essayé par classe pilote, mais Cela fonctionne, donc je crée Job pour la classe de partition, mais ne fonctionne toujours pas. Je veux le nom du fichier de sortie comme dire pour Odd impair et même, Even-r-00001.Peut-on me dire exactement comment puis-je faire ceci.

Répondre