Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
Saiba como executar trabalhos do MapReduce em clusters HDInsight.
Dados de exemplo
O HDInsight fornece vários conjuntos de dados de exemplo, que são armazenados no diretório /example/data e /HdiSamples. Esses diretórios estão no armazenamento padrão do cluster. Neste documento, usamos o arquivo /example/data/gutenberg/davinci.txt. Esse arquivo contém os blocos de anotações de Leonardo da Vinci.
MapReduce de exemplo
Um exemplo de aplicativo de contagem de palavras do MapReduce está incluído no seu cluster HDInsight. Este exemplo está localizado em /example/jars/hadoop-mapreduce-examples.jar no armazenamento padrão para o cluster.
O seguinte código Java é o código-fonte do aplicativo MapReduce contida no arquivo hadoop-mapreduce-examples.jar:
package org.apache.hadoop.examples;
import java.io.IOException;
import java.util.StringTokenizer;
import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.fs.Path;
import org.apache.hadoop.io.IntWritable;
import org.apache.hadoop.io.Text;
import org.apache.hadoop.mapreduce.Job;
import org.apache.hadoop.mapreduce.Mapper;
import org.apache.hadoop.mapreduce.Reducer;
import org.apache.hadoop.mapreduce.lib.input.FileInputFormat;
import org.apache.hadoop.mapreduce.lib.output.FileOutputFormat;
import org.apache.hadoop.util.GenericOptionsParser;
public class WordCount {
public static class TokenizerMapper
extends Mapper<Object, Text, Text, IntWritable>{
private final static IntWritable one = new IntWritable(1);
private Text word = new Text();
public void map(Object key, Text value, Context context
) throws IOException, InterruptedException {
StringTokenizer itr = new StringTokenizer(value.toString());
while (itr.hasMoreTokens()) {
word.set(itr.nextToken());
context.write(word, one);
}
}
}
public static class IntSumReducer
extends Reducer<Text,IntWritable,Text,IntWritable> {
private IntWritable result = new IntWritable();
public void reduce(Text key, Iterable<IntWritable> values,
Context context
) throws IOException, InterruptedException {
int sum = 0;
for (IntWritable val : values) {
sum += val.get();
}
result.set(sum);
context.write(key, result);
}
}
public static void main(String[] args) throws Exception {
Configuration conf = new Configuration();
String[] otherArgs = new GenericOptionsParser(conf, args).getRemainingArgs();
if (otherArgs.length != 2) {
System.err.println("Usage: wordcount <in> <out>");
System.exit(2);
}
Job job = new Job(conf, "word count");
job.setJarByClass(WordCount.class);
job.setMapperClass(TokenizerMapper.class);
job.setCombinerClass(IntSumReducer.class);
job.setReducerClass(IntSumReducer.class);
job.setOutputKeyClass(Text.class);
job.setOutputValueClass(IntWritable.class);
FileInputFormat.addInputPath(job, new Path(otherArgs[0]));
FileOutputFormat.setOutputPath(job, new Path(otherArgs[1]));
System.exit(job.waitForCompletion(true) ? 0 : 1);
}
}
Para saber mais sobre como escrever o seus próprios aplicativos do MapReduce, confira Desenvolver aplicativos em Java MapReduce para HDInsight.
Executar o MapReduce
O HDInsight pode executar trabalhos de HiveQL usando vários métodos. Use a tabela a seguir para decidir qual método é o melhor para você e siga o link para obter o passo-a-passo.
| Use isto... | ...Para fazer isso | ... desse sistema operacional cliente |
|---|---|---|
| SSH | Usar o comando Hadoop por meio de SSH | Linux, Unix, macOS X ou Windows |
| cURL | Enviar o trabalho remotamente usando a REST | Linux, Unix, macOS X ou Windows |
| Windows PowerShell | Enviar o trabalho remotamente usando o Windows PowerShell | Windows |
Próximas etapas
Para saber mais sobre como trabalhar com os dados no HDInsight, consulte os seguintes documentos: