Anteckning
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
Lär dig hur du kör MapReduce-jobb i HDInsight-kluster.
Exempeldata
HDInsight innehåller olika exempeldatauppsättningar som lagras i /example/data katalogen och /HdiSamples . Dessa kataloger finns i standardlagringen för klustret. I det här dokumentet använder vi /example/data/gutenberg/davinci.txt filen. Den här filen innehåller anteckningsböckerna Leonardo da Vinci.
Exempel på MapReduce
Ett exempel på ett MapReduce-program för ordantal ingår i ditt HDInsight-kluster. Det här exemplet finns på /example/jars/hadoop-mapreduce-examples.jar standardlagringen för klustret.
Följande Java-kod är källan till MapReduce-programmet som finns i hadoop-mapreduce-examples.jar filen:
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);
}
}
Instruktioner för att skriva egna MapReduce-program finns i Utveckla Java MapReduce-program för HDInsight.
Kör MapReduce
HDInsight kan köra HiveQL-jobb med hjälp av olika metoder. Använd följande tabell för att bestämma vilken metod som är rätt för dig och följ sedan länken för en genomgång.
| Använd den här... | ... för att göra detta | ... från det här klientoperativsystemet |
|---|---|---|
| SSH | Använda Hadoop-kommandot via SSH | Linux, Unix macOS Xeller Windows |
| Curl | Skicka jobbet via fjärranslutning med hjälp av REST | Linux, Unix macOS Xeller Windows |
| Windows PowerShell | Skicka jobbet fjärrledes med Windows PowerShell | Windows |
Nästa steg
Mer information om hur du arbetar med data i HDInsight finns i följande dokument: