Hadoop 학습노트(3): Combiner funcitons
6243 단어 hadoop
다음은 학습 노트 (1)의 예로 1950년의 날씨 데이터 읽기가 두 개의 맵으로 이루어졌다고 가정하면 첫 번째 맵의 출력은 다음과 같다. (1950, 0)(1950, 20)(1950, 10)
두 번째 맵의 출력은 (1950, 25) (1950, 15)
반면reduce가 얻은 입력은 (1950, [0, 20, 10, 25, 15]), 출력은 (1950, 25)
25는 집합 중의 최대치이기 때문에 우리는 Reduce function과 유사한combiner function을 사용하여 매 맵 출력의 최대치를 찾을 수 있다. 그러면 Reduce의 입력은 (1950,[20,25])
각 funciton은 온도값의 처리 과정에 대해 다음과 같이 표시할 수 있다. max(0, 20, 10, 25, 15) = max(0, 20, 10), max(25, 15) = max(20, 25) = 25
주의: 모든 함수가 이 속성을 가지고 있는 것은 아니다. (이 속성이 있는 함수는 우리가commutative와associative라고 부른다). 예를 들어 우리가 평균 온도를 계산하려면combiner function을 이렇게 사용할 수 없다. 왜냐하면mean(0,20,10,25,15) = 14,mean(0,20,10),mean(25,15) =mean(10,20)= 15
combiner function은 Reduce function을 대체할 수 없습니다. (reduce function 처리가 서로 다른 맵에서 온 같은 키를 가진 기록이 필요하기 때문입니다.)그러나 맵과reduce 사이에서 전송해야 하는 데이터를 줄이는 데 도움을 줄 수 있다는 점에서combinerfunction은 고려할 만하다.
Combiner 기능 선언
이제 우리는 학습 노트 (1)의mapreduce 프로그램으로 돌아왔다. 이 프로그램에 대해combiner의 실현은 Reducer의 실현과 같다. 유일한 변화는 Job에서Combiner의 구체적인 실현 클래스를 설정하는 것이다. (즉, Reducer 클래스, 코드는 아래의 밑줄 부분을 보십시오.)
1 public class MaxTemperatureWithCombiner {
2 public static void main(String[] args) throws Exception {
3 if (args.length != 2) {
4 System.err.println("Usage: MaxTemperatureWithCombiner <input path> " +
5 "<output path>");
6 System.exit(-1);
7 }
8 Job job = new Job();
9 job.setJarByClass(MaxTemperatureWithCombiner.class);
10 job.setJobName("Max temperature");
11
12 FileInputFormat.addInputPath(job, new Path(args[0]));
13 FileOutputFormat.setOutputPath(job, new Path(args[1]));
14
15 job.setMapperClass(MaxTemperatureMapper.class);
16 job.setCombinerClass(MaxTemperatureReducer.class); 17 job.setReducerClass(MaxTemperatureReducer.class);
18
19 job.setOutputKeyClass(Text.class);
20 job.setOutputValueClass(IntWritable.class);
21
22 System.exit(job.waitForCompletion(true) ? 0 : 1);
23 }
24 }
전재 출처 기재: http://www.cnblogs.com/beanmoon/archive/2012/12/09/2805684.html
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Azure HDInsight + Microsoft R Server에서 연산 처리 분산Microsoft Azure HDInsight는 Microsoft가 제공하는 Hadoop의 PaaS 서비스로 인프라 주변의 구축 노하우를 몰라도 훌륭한 Hadoop 클러스터를 구축할 수 있는 훌륭한 서비스입니다. 이...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.