Mapper가 하위 그룹에 속한 데이터를 내보내고 하위 그룹이 그룹에 속하는 경우가 있습니다.두 값으로 그룹화하는 감속기
하위 그룹의 모든 값을 더하고 각 그룹에 대해 그룹의 모든 하위 그룹 사이에 최소값을 찾아야합니다.
그래서, 난 내 출력 그래서 실질적으로 그룹에 필요
그룹 2에 대한
Group1, 1, (2+3+4)
Group1, 2, (1+2)
Group1, 3, (1+2+5)
Group1 min = min((2+3+4),(1+2),(1+2+5))
동일해야이
Group 1
group,subgroupId,value
Group1,1,2
Group1,1,3
Group1,1,4
Group1,2,1
Group1,2,2
Group1,3,1
Group1,3,2
Group1,3,5
Group 2
group,subgroupId,value
Group2,4,2
Group2,4,3
Group2,4,4
Group2,5,1
Group2,5,2
Group2,6,1
Group2,6,2
그리고처럼 보이는 매퍼의 출력이 두 번, GROUP에 의해 첫 번째 그룹 다음 SUBGROUPID에 의해 그 그룹의 내부.
그래서 I가 그룹에서 최소 합을 방출한다, 최소한의 합이 3이기 때문에, 소정 실시 예에서 제 감속기는 (2,3)를 방출해야하고 따라서 ID 2.
와 소자로부터 온다 그것은 두번 줄이는 reduce를 사용하여 가장 잘 풀릴 수있을 것 같습니다, 첫번째 reduce는 id에 의해 그룹화 된 원소를 얻었고 그것은 Group id에 의해 그룹화 된 두번째 Reducer로 전달 될 것입니다.
이것이 의미가 있으며 구현 방법은 무엇입니까? 나는 ChainedMapper와 ChainedReducer를 보았지만이 목적에 적합하지 않습니다.
감사
맵퍼는 어떤 ID가 어떤 그룹에 속하는지 어떻게 알 수 있습니까? 원래 입력 샘플을 줄 수 있습니까? 또는 그룹이 중요하지 않으며 입력 분할을 식별하는 것뿐입니다 (그리고 두 개의 매퍼가 있습니다)? –
그게 문제입니다, 각 레코드는 어떤 그룹에 속해 있습니다. 그래서 그룹에 관한 정보는 각 레코드에서 나옵니다. 그래서 저는 그룹별로 그룹화 한 다음 하위 그룹별로 그룹화해야합니다 (실제로는 동일한 키가있는 레코드가 포함되어 있음). 나는 내 질문을 편집 할 것이다. – Marko