Remember to maintain security and privacy. Do not share sensitive information. Procedimento.com.br may make mistakes. Verify important information. Termo de Responsabilidade
MapReduce é um modelo de programação utilizado para processar grandes volumes de dados de forma distribuída. Ele divide o trabalho em duas etapas principais: o mapeamento (map) e a redução (reduce). O mapeamento envolve a divisão dos dados em partes menores e a execução de operações em paralelo. Já a redução consiste em combinar os resultados parciais obtidos no mapeamento para gerar o resultado final.
Exemplos:
# Importando a biblioteca MapReduce
import MapReduce
def mapper(record):
key = record[0]
value = record[1]
# Emitindo a chave e o valor para o processo de redução
MapReduce.emit_intermediate(key, value)
def reducer(key, list_of_values):
result = some_processing_function(list_of_values)
MapReduce.emit(result)
mr = MapReduce.MapReduce()
input_data = read_input()
mr.execute(input_data, mapper, reducer)
result = mr.get_result()
2. Exemplo em Java:
```java
import org.apache.hadoop.mapreduce.Mapper;
import org.apache.hadoop.mapreduce.Reducer;
import org.apache.hadoop.mapreduce.Job;
import org.apache.hadoop.mapreduce.lib.input.TextInputFormat;
import org.apache.hadoop.mapreduce.lib.output.TextOutputFormat;
public class MapReduceExample {
public static class Map extends Mapper<LongWritable, Text, Text, IntWritable> {
public void map(LongWritable key, Text value, Context context) throws IOException, InterruptedException {
// Realizando o mapeamento dos dados
// Emitindo a chave e o valor para o processo de redução
context.write(new Text(key.toString()), new IntWritable(1));
}
}
public static class Reduce extends Reducer<Text, IntWritable, Text, IntWritable> {
public void reduce(Text key, Iterable<IntWritable> values, Context context) throws IOException, InterruptedException {
int sum = 0;
for (IntWritable value : values) {
// Realizando a redução dos dados
sum += value.get();
}
// Emitindo o resultado final
context.write(key, new IntWritable(sum));
}
}
public static void main(String[] args) throws Exception {
// Configurando o job MapReduce
Job job = new Job();
job.setJarByClass(MapReduceExample.class);
job.setJobName("MapReduce Example");
// Configurando o formato de entrada e saída
job.setInputFormatClass(TextInputFormat.class);
job.setOutputFormatClass(TextOutputFormat.class);
// Configurando as classes de mapeamento e redução
job.setMapperClass(Map.class);
job.setReducerClass(Reduce.class);
// Configurando os tipos de chave e valor de entrada e saída
job.setOutputKeyClass(Text.class);
job.setOutputValueClass(IntWritable.class);
// Configurando os caminhos de entrada e saída
FileInputFormat.addInputPath(job, new Path(args[0]));
FileOutputFormat.setOutputPath(job, new Path(args[1]));
// Executando o job MapReduce
System.exit(job.waitForCompletion(true) ? 0 : 1);
}
}
Aprender sobre MapReduce é essencial para lidar com grandes volumes de dados de forma eficiente. Compartilhe este artigo com seus amigos e ajude-os a aprimorar suas habilidades em processamento distribuído!