[HADOOP] Mapreduce 작업의 "Combiner"클래스
HADOOPMapreduce 작업의 "Combiner"클래스
Combiner는 Mapper 다음에 실행되고 Reducer가 실행되기 전에 주어진 노드의 Mapper 인스턴스가 방출하는 모든 데이터를 입력으로받습니다. Reducers에 출력을 내 보냅니다.
또한 reduce 함수가 교환 가능하고 연관성이있는 경우 Combiner로 사용할 수 있습니다.
내 질문은이 상황에서 "통용적이고 연관성있는"구가 무엇을 의미합니까?
해결법
-
==============================
1.숫자 목록, 1 2 3 4 5 6이 있다고 가정하십시오.
숫자 목록, 1 2 3 4 5 6이 있다고 가정하십시오.
여기에서 연관성이란 작업을 수행하여 하위 그룹에 적용한 다음 결과에 적용하여 동일한 대답을 얻을 수 있음을 의미합니다.
(1) + (2 + 3) + (4 + 5 + 6) == (1 + 2) + (3 + 4) + (5) + (6) == ...
여기서 괄호는 결합 자의 실행이라고 생각하십시오.
교환은 순서가 중요하지 않으므로 다음을 의미합니다.
1 + 2 + 3 + 4 + 5 + 6 == 2 + 4 + 6 + 1 + 2 + 3 == ...
예를 들어, 더하기는 이전에 본 것처럼이 속성에 맞습니다. 최대 값의 최대 값이 최대 값이기 때문에 위의 "최대 값"과 동일합니다. max (a, b) == max (b, a).
중앙값은 작동하지 않는 예입니다. 중간 값의 중앙값은 실제 중앙값이 아닙니다.
결합 자의 또 다른 중요한 속성을 잊지 마십시오 : 키 / 값의 입력 유형과 키 / 값의 출력 유형이 동일해야합니다. 예를 들어, 문자열을 가져올 수 없습니다 : int 및 문자열 반환 : float.
가끔씩 감속기는 숫자 값 대신 문자열을 출력 할 수 있기 때문에 감속기를 결합기로 연결하는 것을 방해 할 수 있습니다.
-
==============================
2.commutativity의 경우 감속기가 f ()라는 함수로 표현 될 수 있다고 가정 해 봅시다. 그런 다음 f (a, b) = f (b, a)이면 감속기는 교환 가능합니다. 예를 들면 :
commutativity의 경우 감속기가 f ()라는 함수로 표현 될 수 있다고 가정 해 봅시다. 그런 다음 f (a, b) = f (b, a)이면 감속기는 교환 가능합니다. 예를 들면 :
결합성에 대해, 성질은 f (f (a, b), c) = f (a, f (b, c))이다. 예 :
따라서 Map / Reduce의 컨텍스트에서 감속기는이 두 속성을 존중해야합니다. 예를 들어 감속기가 sum () 또는 max ()를 수행하는 경우 두 속성을 모두 존중하지만 mean () 또는 median ()과 같은 것은 없으므로 결합 자로 사용할 수 없습니다.
필자는 개인적으로 네트워크 트래픽을 줄이기위한 최적화로지도 단계 이후에 메모리에서 실행되는 소형 감속기로 결합자를 보았습니다.지도 / 축소 방식을 볼 때 commutativity / associativity는 실제로 의미가 있습니다.
from https://stackoverflow.com/questions/10220371/combiner-class-in-a-mapreduce-job by cc-by-sa and MIT license
'HADOOP' 카테고리의 다른 글
[HADOOP] BufferedReader.close ()를 수행 할 때 Hadoop FileSystem이 예외를 종료했습니다. (0) | 2019.06.15 |
---|---|
[HADOOP] Hadoop-Hive에서 테이블을 삭제하거나 자르는 방법은 무엇입니까? (0) | 2019.06.15 |
[HADOOP] 임팔라는 모든 하이브 테이블에 액세스 할 수 없습니다. (0) | 2019.06.15 |
[HADOOP] pyspark / spark를 사용하여 큰 분산 데이터 세트 샘플링 (0) | 2019.06.15 |
[HADOOP] Hive에 저장된 데이터에 대해 돼지 쿼리 실행 (0) | 2019.06.15 |