Tp en Big Data : Le paradigme MapReduce

1/6
100%

Tp en Big Data : Le paradigme MapReduce

TAF : Saisir sous Eclipse le code suivant:

package org.tpmr.hadoop.wordcount;

import org.apache.hadoop.fs.Path;

import org.apache.hadoop.mapreduce.Job;

import org.apache.hadoop.mapreduce.lib.input.FileInputFormat;

import org.apache.hadoop.mapreduce.lib.output.FileOutputFormat;

import org.apache.hadoop.conf.Configuration;

import org.apache.hadoop.util.GenericOptionsParser;

import org.apache.hadoop.io.Text;

import org.apache.hadoop.io.IntWritable;

// Notre classe Driver

// (contient le main du programme Hadoop).

public class WCount

{

// Le main du programme.

public static void main(String[] args) throws Exception

{

// Cr er un object de configuration Hadoop.

Configuration conf=new Configuration();

// Permet Hadoop de lire ses arguments g n riques,

Publicité

// r cup re les arguments restants dans ourArgs.

String[] ourArgs=new GenericOptionsParser(conf, args).getRemainingArgs();

// Obtient un nouvel objet Job: une t che Hadoop. On

// fournit la configuration Hadoop ainsi qu'une description

// textuelle de la t che.

Job job=Job.getInstance(conf, "Compteur de mots v1.0");

// D fini les classes driver, map et reduce.

job.setJarByClass(WCount.class);

job.setMapperClass(WCountMap.class);

job.setReducerClass(WCountReduce.class);

// D fini types clefs/valeurs de notre programme Hadoop.

job.setOutputKeyClass(Text.class);

job.setOutputValueClass(IntWritable.class);

// D fini les fichiers d'entr e du programme et le r pertoire

// des r sultats. On se sert du premier et du deuxi me

//argument restants pour permettre // l'utilisateur de les

// sp cifier lors de l'ex cution.

FileInputFormat.addInputPath(job, new Path(ourArgs[0]));

FileOutputFormat.setOutputPath(job, new Path(ourArgs[1]));

// On lance la t che Hadoop. Si elle s'est effectu e

// correctement, on renvoie 0. Sinon, on renvoie -1.

Publicité

if(job.waitForCompletion(true))

System.exit(0);

System.exit(-1);

}

}

package org.tpmr.hadoop.wordcount;

import org.apache.hadoop.mapreduce.Job;

import org.apache.hadoop.io.Text;

import org.apache.hadoop.io.IntWritable;

import java.util.StringTokenizer;

import org.apache.hadoop.mapreduce.Mapper;

import java.io.IOException;

// Notre classe MAP.

public class WCountMap extends Mapper

{

// IntWritable contant de valeur 1.

private static final IntWritable ONE=new IntWritable(1);

// La fonction MAP elle-m me.

protected void map(Object offset, Text value, Context context) throws IOException, InterruptedException

{

// Un StringTokenizer va nous permettre de parcourir chacun

Publicité

// des mots de la ligne qui est pass e notre op ration MAP.

StringTokenizer tok=new StringTokenizer(value.toString(), " ");

while(tok.hasMoreTokens())

{

Text word=new Text(tok.nextToken());

// On renvoie notre couple (clef;valeur): le mot courant suivi

// de la valeur 1 (d finie dans la constante ONE).

context.write(word, ONE);

}

}

}

package org.tpmr.hadoop.wordcount;

import org.apache.hadoop.io.Text;

import org.apache.hadoop.io.IntWritable;

import org.apache.hadoop.mapreduce.Reducer;

import java.util.Iterator;

import java.io.IOException;

// Notre classe REDUCE - param tr e avec un type Text pour la

// clef, un type de valeur IntWritable, et un type de retour (le retour

//final de la fonction Reduce) Text.

public class WCountReduce extends Reducer<text, intwritable, text, text>

Publicité

{

// La fonction REDUCE elle-m me. Les arguments: la clef key,

// un Iterable de toutes les valeurs qui sont associ es la clef

// en question, et le contexte Hadoop (un handle qui nous

//permet de renvoyer le r sultat Hadoop).

public void reduce(Text key, Iterable values, Context context) throws IOException, InterruptedException

{

// Pour parcourir toutes les valeurs associ es la clef

// fournie.

Iterator i=values.iterator();

int count=0;

// Notre total pour le mot concern .

while(i.hasNext()) // Pour chaque valeur...

count+=i.next().get(); // ...on l'ajoute au total.

// On renvoie le couple (clef;valeur) constitu de notre clef

// key et du total, au format Text.

context.write(key, new Text(count+" occurences."));

}

}

Tp en Big Data : Le paradigme MapReduce

Big Data Engineering · lab

Voir tous les documents en intelligence artificielle et données

Tp en Big Data : Le paradigme MapReduce

TAF : Saisir sous Eclipse le code suivant:

package org.tpmr.hadoop.wordcount;

import org.apache.hadoop.fs.Path;

import org.apache.hadoop.mapreduce.Job;

import org.apache.hadoop.mapreduce.lib.input.FileInputFormat;

import org.apache.hadoop.mapreduce.lib.output.FileOutputFormat;

import org.apache.hadoop.conf.Configuration;

import org.apache.hadoop.util.GenericOptionsParser;

import org.apache.hadoop.io.Text;

import org.apache.hadoop.io.IntWritable;

// Notre classe Driver

// (contient le main du programme Hadoop).

public class WCount

{

// Le main du programme.

public static void main(String[] args) throws Exception

{

// Cr er un object de configuration Hadoop.

Configuration conf=new Configuration();

// Permet Hadoop de lire ses arguments g n riques,

Publicité

// r cup re les arguments restants dans ourArgs.

String[] ourArgs=new GenericOptionsParser(conf, args).getRemainingArgs();

// Obtient un nouvel objet Job: une t che Hadoop. On

// fournit la configuration Hadoop ainsi qu'une description

// textuelle de la t che.

Job job=Job.getInstance(conf, "Compteur de mots v1.0");

// D fini les classes driver, map et reduce.

job.setJarByClass(WCount.class);

job.setMapperClass(WCountMap.class);

job.setReducerClass(WCountReduce.class);

// D fini types clefs/valeurs de notre programme Hadoop.

job.setOutputKeyClass(Text.class);

job.setOutputValueClass(IntWritable.class);

// D fini les fichiers d'entr e du programme et le r pertoire

// des r sultats. On se sert du premier et du deuxi me

//argument restants pour permettre // l'utilisateur de les

// sp cifier lors de l'ex cution.

FileInputFormat.addInputPath(job, new Path(ourArgs[0]));

FileOutputFormat.setOutputPath(job, new Path(ourArgs[1]));

// On lance la t che Hadoop. Si elle s'est effectu e

// correctement, on renvoie 0. Sinon, on renvoie -1.

Publicité

if(job.waitForCompletion(true))

System.exit(0);

System.exit(-1);

}

}

package org.tpmr.hadoop.wordcount;

import org.apache.hadoop.mapreduce.Job;

import org.apache.hadoop.io.Text;

import org.apache.hadoop.io.IntWritable;

import java.util.StringTokenizer;

import org.apache.hadoop.mapreduce.Mapper;

import java.io.IOException;

// Notre classe MAP.

public class WCountMap extends Mapper

{

// IntWritable contant de valeur 1.

private static final IntWritable ONE=new IntWritable(1);

// La fonction MAP elle-m me.

protected void map(Object offset, Text value, Context context) throws IOException, InterruptedException

{

// Un StringTokenizer va nous permettre de parcourir chacun

Publicité

// des mots de la ligne qui est pass e notre op ration MAP.

StringTokenizer tok=new StringTokenizer(value.toString(), " ");

while(tok.hasMoreTokens())

{

Text word=new Text(tok.nextToken());

// On renvoie notre couple (clef;valeur): le mot courant suivi

// de la valeur 1 (d finie dans la constante ONE).

context.write(word, ONE);

}

}

}

package org.tpmr.hadoop.wordcount;

import org.apache.hadoop.io.Text;

import org.apache.hadoop.io.IntWritable;

import org.apache.hadoop.mapreduce.Reducer;

import java.util.Iterator;

import java.io.IOException;

// Notre classe REDUCE - param tr e avec un type Text pour la

// clef, un type de valeur IntWritable, et un type de retour (le retour

//final de la fonction Reduce) Text.

public class WCountReduce extends Reducer<text, intwritable, text, text>

Publicité

{

// La fonction REDUCE elle-m me. Les arguments: la clef key,

// un Iterable de toutes les valeurs qui sont associ es la clef

// en question, et le contexte Hadoop (un handle qui nous

//permet de renvoyer le r sultat Hadoop).

public void reduce(Text key, Iterable values, Context context) throws IOException, InterruptedException

{

// Pour parcourir toutes les valeurs associ es la clef

// fournie.

Iterator i=values.iterator();

int count=0;

// Notre total pour le mot concern .

while(i.hasNext()) // Pour chaque valeur...

count+=i.next().get(); // ...on l'ajoute au total.

// On renvoie le couple (clef;valeur) constitu de notre clef

// key et du total, au format Text.

context.write(key, new Text(count+" occurences."));

}

}