차례:
- 큰 데이터를위한 맵 함수
- 는 수년 동안 함수형 프로그래밍 언어의 기능이었습니다. reduce 함수는 맵 함수의 출력을 취하고 프로그래머가 원하는 어떤 식 으로든 목록을 "축소"합니다.
- 소프트웨어 개발자는 알고리즘을 기반으로 응용 프로그램을 설계합니다.
비디오: MongoDB 프로그래밍 12강 MapReduce 개념 살펴보기 | T아카데미 2024
큰 데이터를위한 맵 함수
map 함수는 여러 함수형 프로그래밍 언어의 한 부분이다. 지도는 데이터 요소 목록 처리의 핵심 기술로 다시 활력을 불어 넣었습니다.
함수형 언어의 연산자는 데이터 구조를 수정하지 않습니다. 새로운 데이터 구조를 출력으로 만듭니다. 원본 데이터 자체도 수정되지 않았습니다. 따라서 소중한 저장된 데이터를 손상시키지 않으므로지도 기능을 사용할 수 있습니다. 함수 프로그래밍에 대한 또 다른 이점은 데이터의 이동 또는 흐름을 명시 적으로 관리 할 필요가 없다는 것이다. 이것은 프로그래머가 명시 적으로 데이터 출력과 배치를 관리하는 것을 막는다. 마지막으로 데이터 조작 순서는 규정되어 있지 않습니다.
mylist = (가장 최근 총선에 참여한 모든 카운티) >지도 함수
를 사용하여 howManyPeople 함수를 만듭니다.
50,000 명이 넘는 카운티를 선택합니다:
map howManyPeople (mylist) = [howManyPeople "county 1"; howManyPeople "county 2"; howManyPeople "county 3"; howManyPeople "county 4"; …] 인구가 50,000보다 큰 모든 카운티의 새로운 산출 목록을 생성하십시오. -
(아니요, 카운티 1, 예 2, 아니요, 카운티 3, 예 4,?, 카운티 nnn)
함수는 원래 목록을 변경하지 않고 실행됩니다. 또한 출력 목록의 각 요소가 입력 목록의 해당 요소에 매핑되고 예 또는 아니오가 첨부 된 것을 볼 수 있습니다. 카운티가 50, 000 명이 넘는 사람들의 요구 사항을 충족 시키면지도 기능이이를 확인합니다. 그렇지 않은 경우, 아니오가 표시됩니다.
큰 데이터에 대해 reduce 함수 추가
map 함수와 마찬가지로
reduce는 수년 동안 함수형 프로그래밍 언어의 기능이었습니다. reduce 함수는 맵 함수의 출력을 취하고 프로그래머가 원하는 어떤 식 으로든 목록을 "축소"합니다.
reduce 함수가 요구하는 첫 번째 단계는 초기 값을 유지하는 누적 기 , 라고하는 값에 값을 배치하는 것입니다. 누적기에 시작 값을 저장 한 후 reduce 함수는 목록의 각 요소를 처리하고 목록에서 필요한 작업을 수행합니다.
howManyPeople 맵 함수를 호출하면 다음 출력 목록이 남습니다.
(아니오, 카운티 1, 예, 카운티 2, 아니요, 카운티 3, 예, 카운티 4;, county nnn)
이것은 이제 reduce 함수의 입력 값입니다.countylist = (아니오, 카운티 1, 예 2, 아니요, 카운티 3, 예 4,?, 카운티 nnn) reduce isDemocrat (countylist)
reduce 함수 프로세스 명부의 각 성분은 대다수가 민주당을 투표 한 50,000 이상 인구를 가진 모든 군의 명부를 돌려 보낸다.
큰 데이터 맵 배치 및 축소
때로는 출력 목록을 만드는 것만으로도 충분합니다. 마찬가지로 목록의 각 요소에 대해 작업을 수행하는 것만으로도 충분합니다. 대부분의 경우, 많은 양의 입력 데이터를 살펴보고 데이터에서 특정 요소를 선택한 다음 관련 데이터 조각에서 가치있는 것을 계산하려고합니다.
새로운 가정과 새로운 데이터를 사용하여 다른 방식으로 사용할 수 있도록 입력 목록을 변경하고 싶지는 않습니다.
소프트웨어 개발자는 알고리즘을 기반으로 응용 프로그램을 설계합니다.
알고리즘
은 전체 목표에 대한 서비스에서 발생해야하는 일련의 단계에 불과합니다. 다음과 같이 보일 수 있습니다.
많은 수 또는 데이터 또는 레코드로 시작하십시오. 데이터를 반복합니다. map 함수를 사용하여 관심있는 것을 추출하고 출력 목록을 만듭니다.
-
추가 처리를 위해 최적화되도록 출력 목록을 구성합니다.
-
reduce 함수를 사용하여 결과 집합을 계산합니다.
-
최종 산출물을 산출합니다.
-
프로그래머는이 접근 방식을 사용하여 모든 종류의 응용 프로그램을 구현할 수 있지만이 예제는 매우 간단하므로 MapReduce의 진정한 가치는 분명하지 않을 수 있습니다. 매우 큰 입력 데이터가있을 때 어떻게됩니까? 수 테라 바이트의 데이터에서 동일한 알고리즘을 사용할 수 있습니까? 좋은 소식은 '예'입니다.
-
모든 작업은 독립적으로 보입니다. 그것은 그들이 있기 때문입니다. MapReduce의 진정한 힘은 분열하고 정복 할 수있는 능력입니다. 매우 큰 문제를 해결하고 더 작고 관리하기 쉬운 덩어리로 나누고 각 덩어리를 독립적으로 조작 한 다음 끝까지 모두 잡아 당깁니다. 또한 맵 함수는 교환 가능합니다. 즉, 함수가 실행되는 순서는 중요하지 않습니다.
-
MapReduce는 네트워크의 여러 시스템에서 작업을 수행 할 수 있습니다. 또한 내부 또는 외부의 여러 데이터 소스에서 가져올 수 있습니다. MapReduce는 모든 처리가 동일한 문제를 해결하는 것과 관련된 고유 한 키를 생성하여 작업을 추적합니다.이 키는 모든 분산 작업의 끝에서 모든 출력을 함께 가져 오는데도 사용됩니다.