Remember to maintain security and privacy. Do not share sensitive information. Procedimento.com.br may make mistakes. Verify important information. Termo de Responsabilidade

MapReduce: Uma introdução aos scripts de processamento distribuído

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:

  1. Exemplo em Python:
    
    # Importando a biblioteca MapReduce
    import MapReduce

Função de mapeamento

def mapper(record):

Obtendo a chave e o valor do registro

key = record[0]
value = record[1]

# Emitindo a chave e o valor para o processo de redução
MapReduce.emit_intermediate(key, value)

Função de redução

def reducer(key, list_of_values):

Realizando o processamento necessário e emitindo o resultado final

result = some_processing_function(list_of_values)
MapReduce.emit(result)

Criando um objeto MapReduce

mr = MapReduce.MapReduce()

Carregando os dados de entrada

input_data = read_input()

Executando o mapeamento e a redução

mr.execute(input_data, mapper, reducer)

Obtendo o resultado final

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!

To share Download PDF

Gostou do artigo? Deixe sua avaliação!
Sua opinião é muito importante para nós. Clique em um dos botões abaixo para nos dizer o que achou deste conteúdo.