궁금한데 MapReduce, Hadoop 등은 독립적으로 운영되는 작업으로 데이터 묶음을 어떻게 나눕니까? 나는 그 일이 어떻게 될지 상상하기가 힘들다. 일들 사이의 상태 조건과 같은, 매우 내재적 인 데이터를 갖는 것이 일반적이라는 것을 고려하면,MapReduce 작업이 서로 독립적임을 보장하려면 어떻게해야합니까?
고마워.
궁금한데 MapReduce, Hadoop 등은 독립적으로 운영되는 작업으로 데이터 묶음을 어떻게 나눕니까? 나는 그 일이 어떻게 될지 상상하기가 힘들다. 일들 사이의 상태 조건과 같은, 매우 내재적 인 데이터를 갖는 것이 일반적이라는 것을 고려하면,MapReduce 작업이 서로 독립적임을 보장하려면 어떻게해야합니까?
고마워.
데이터가 관련된 경우 정보가 전달되는지 확인하는 것이 사용자의 작업입니다. MapReduce는 구현되지 않은 관계에 관계없이 데이터를 분해하고 처리합니다.
지도는 입력 파일에서 블록으로 된 데이터를 읽고지도 기능에 한 번에 하나씩 "기록"합니다. 기본 레코드는 라인입니다 (그러나 수정할 수 있음).
지도의 데이터에 원점을 표시 할 수 있지만 기본적으로지도로 수행 할 수있는 작업은 데이터를 분류하는 것입니다. 새 키와 새 값 및 MapReduce 그룹을 새 키로 내 보냅니다. 따라서 서로 다른 레코드 사이에 관계가있는 경우 : 동일한 레코드 (또는 유사한 * 1) 키를 선택하여 함께 그룹화하십시오.
데이터를 줄이려면 (그룹화가 이루어지는) 데이터가 분할/정렬되고 이후에 reduce-function이 한 그룹의 모든 데이터 (하나의 키와 모든 관련 값)를받습니다. 이제 값을 합산 할 수 있습니다. 그게 전부 야.
MapReduce에서 구현 된 전체 그룹이 있습니다. 다른 모든 것은 귀하의 책임입니다. 두 가지 소스에서 교차 제품을 원하십니까? 예를 들어 인공 키와 다중 방출 (조각 및 복제 조인)을 도입하여 구현하십시오. 당신의 상상력이 한계입니다. 그리고 : 다른 작업을 통해 항상 데이터를 전달할 수 있습니다.
* 1 : 나중에 그룹화 선택에 영향을 줄 수 있기 때문에 비슷합니다. 일반적으로 그룹은 신원 확인 기능이지만, 이것을 변경할 수 있습니다.