2012-04-08 2 views
0

하둡 컴 바이너 클래스를 사용할 때의 직감을 얻기 위해 노력하고 있습니다. (몇 가지 기사를 보았지만 제 상황에서는 특별히 도움이되지 않았습니다).텍스트 용 하둡 컴 바이 너 클래스

내 질문은, 쌍의 값이 Text 클래스 일 때 결합기 클래스를 사용하는 것이 적절한가요? 그것도 감속기에 도달하기 전에

fruit apple orange banana 
... 
veggie carrot celery 
... 

:

fruit apple 
fruit orange 
fruit banana 
... 
veggie carrot 
veggie celery 
... 

우리가 할 여기 결합기 클래스를 적용 할 수 있습니다 : 예를 들어, 우리가 매퍼에서 다음과 같은 출력이 있다고 가정 해 봅시다?

+0

Erm, 감속기가 데이터를 수신하는 방법은 ... 그렇다면 그렇습니다. –

+0

@BrianRoach 감속기는 기본적으로 결합자가 가능한 경우 할 일을합니다. 당신의 대답에 대해 자세히 설명해 주시겠습니까? 면책 조항으로, 과제가 생겼고 교수님이 위의 예와 비슷한 상황에 조합기 클래스를 도입 할 수없는 이유를 묻습니다. 그러나, 나는 할 수있는 것처럼 느낀다. 그래서 나는 묻고있다. – honeywind

답변

3

결합자는 일반적으로 데이터에 대한 집계, 최소, 최대 등 작업을 수행하는 데 적합합니다.이 값은 맵 출력에 대한 결합기에서 계산 된 다음 모든 결합 출력. 이것은 매퍼와 감속기 사이에서 네트워크를 통해 모든 데이터를 전송하지 않는다는 것을 의미하므로 유용합니다.

이제는 각 키에 대해 관찰 된 값 목록을 축적하기 위해 결합자를 도입 할 수 없다는 이유가 있습니다. (예를 들어 귀하의 예제에서 보여지는 것으로 가정합니다.)하지만 속임수가되는 몇 가지 사항이 있습니다.

매퍼에서 <Text, Text> 쌍을 출력하고 감속기에서 <Text, Text>을 소비해야하는 경우 결합자는 쉽게 값 목록을 연결하여이를 텍스트 값으로 출력 할 수 있습니다. 이제 감속기에서 동일한 작업을 수행하고 모든 값을 연결하여 하나의 큰 출력을 형성 할 수 있습니다.

출력 목록을 정렬 및 삭제하려는 경우 문제가 발생할 수 있습니다. 결합 자/감속기 논리가 Text 객체를 단어로 토큰 화하고 목록을 정렬 및 중복 제거한 다음 단어 목록을 다시 작성해야하기 때문에 .

직접 귀하의 질문에 대답하려면 - 때 적절할 것, 그럼 난 몇 가지 예를 생각할 수 :

  • 당신은 당신이 가진 각각의 키
  • 과 관련된 사전 편찬 최소 또는 최대 값을 찾기 위해 원하는 경우 각각의 키에 대한 수백만 개의 값과 '무작위로'작은 값을 샘플링하려는 경우
+0

감사합니다. 훌륭한 설명이었습니다. 결합 자 클래스는 중복을 소개하기 때문에 실제로 상황에 맞는 타겟을 공격했습니다. – honeywind

0

교환 적 또는 결합 적 접근 방식을 사용할 상황이있을 때 결합 자 클래스가 사용됩니다. 예 :

abc = cba 결합 작업 수행 중 (a * b = d), c 그리고 d, c 값을 감속기로 보냅니다. 이제는 감속기가 최종 응답을 얻기 위해 두 가지 작업, 즉 a * b = d d * c 대신 하나의 작업 만 수행해야합니다. 당신이 d * c만을 할 필요가있는 결합기를 사용한다면.

연관성 (그룹화) 및 교환 형 (이동성) 결과는 곱하거나 추가하는 방법에 따라 달라지지 않습니다. 주로 combiner는 Associative & commutative를 따르는 구조화 된 데이터에 사용됩니다.결합기의

장점 :

  • 이지도 감속기
  • executionn의 일부 Comabiner에서 일어나는대로 감속기에서 디스크 I/O를 감소 사이의 네트워크 I/O를 줄일 수 있습니다.