色婷婷狠狠18禁久久YY,CHINESE性内射高清国产,国产女人18毛片水真多1,国产AV在线观看

java map和mapreduce

林子帆2年前8瀏覽0評論

Java中的Map是一種以鍵值對為基本組成單元的數據結構,它可以很方便地操作一些鍵值對的增刪改查操作。在大數據處理中,MapReduce是一種極為常用的編程模型,它將數據處理分解成了兩個核心操作:Map和Reduce。

//示例1:HashMap的使用
import java.util.HashMap;
public class HashMapDemo {
public static void main(String[] args) {
HashMaphashmap = new HashMap();
hashmap.put("apple", 10);
hashmap.put("orange", 20);
int appleCount = hashmap.get("apple");
System.out.println("There are " + appleCount + " apples.");
}
}

在這里,我們使用Java語言實現了一個使用HashMap的例子。首先創建了一個hashmap對象,然后向其中加入了兩個鍵值對:apple-10 和 orange-20。接著我們通過get方法獲取了apple的value值,輸出了結果。對于Map類型的數據結構,我們可以很方便地通過key值獲取其對應的value值。

//示例2:MapReduce的使用
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;
public class WordCount {
public static class TokenizerMapper extends Mapper{
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{
private IntWritable result = new IntWritable();
public void reduce(Text key, Iterablevalues, 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();
Job job = Job.getInstance(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(args[0]));
FileOutputFormat.setOutputPath(job, new Path(args[1]));
System.exit(job.waitForCompletion(true) ? 0 : 1);
}
}

這里給出了一段java的MapReduce實現代碼,實現的功能是計算一個文本中每個單詞的出現次數。將這個任務分解成了兩個部分:map和reduce。Map過程中將每個單詞作為key值,將1作為value值;Reduce過程中將相同key值的value值相加,得到了單詞的總共出現次數。通過這個例子,我們能十分清楚地看到MapReduce的實現過程,大量的數據的處理就依靠了這個強大的工具。