web-dev-qa-db-fra.com

Hadoop Map Reduce lire un fichier texte

J'essaie d'écrire un programme MapReduce qui peut lire un fichier d'entrée et écrire la sortie dans un autre fichier texte. Je prévois d'utiliser la classe BufferedReader pour cela. Mais je ne sais pas vraiment comment l'utiliser dans un programme MapReduce.

Quelqu'un peut-il m'en donner un extrait de code?

P.S. Je suis totalement nouveau dans la programmation Hadoop et MapReduce. Restez avec moi.

Merci d'avance.

11
user2201650

Le code ci-dessous vous aide à lire un fichier depuis HDFS et à afficher le contenu dans la console

import Java.io.BufferedReader;
import Java.io.InputStreamReader;

import org.Apache.hadoop.conf.Configuration;
import org.Apache.hadoop.fs.FileSystem;
import org.Apache.hadoop.fs.Path;

public class Cat{
    public static void main (String [] args) throws Exception{
        try{
            Path pt=new Path("hdfs:/path/to/file");//Location of file in HDFS
            FileSystem fs = FileSystem.get(new Configuration());
            BufferedReader br=new BufferedReader(new InputStreamReader(fs.open(pt)));
            String line;
            line=br.readLine();
            while (line != null){
                System.out.println(line);
                line=br.readLine();
            }
        }catch(Exception e){
        }
    }
}

MODIFIER

Driver

public class ReadFile {

    public static void main(String[] args) throws Exception {
        Configuration conf = new Configuration();
        Job job = new Job(conf, "Read a File");


        FileSystem fs = FileSystem.get(conf);
        job.setOutputKeyClass(Text.class);
        job.setOutputValueClass(IntWritable.class);
        if (fs.exists(new Path(args[1])))
            fs.delete(new Path(args[1]), true);
        job.setMapperClass(Map.class);
        job.setReducerClass(Reduce.class);

        job.setInputFormatClass(TextInputFormat.class);
        job.setOutputFormatClass(TextOutputFormat.class);

        FileInputFormat.addInputPath(job, new Path(args[0]));
        FileOutputFormat.setOutputPath(job, new Path(args[1]));
        job.setJarByClass(ReadFile.class);     
        job.waitForCompletion(true);
    }

}

Mappeur

public class Map extends Mapper<LongWritable, Text, Text, IntWritable> {

    public void setup(Context context) throws IOException{
        Path pt=new Path("hdfs:/path/to/file");//Location of file in HDFS
        FileSystem fs = FileSystem.get(new Configuration());
        BufferedReader br=new BufferedReader(new InputStreamReader(fs.open(pt)));
        String line;
        line=br.readLine();
        while (line != null){
            System.out.println(line);
            line=br.readLine();
        }
    }
    public void map(LongWritable key, Text value, Context context)
            throws IOException, InterruptedException {
      //as your wish
        }
    }
}

Le code ci-dessus vous aide à lire un fichier texte à partir de HDFS.

10
Unmesha SreeVeni