MapReduce는이 프로그래밍 모델이며, 또한 처리 알고리즘이 큰 데이터 세트의 관계 모델을 생성한다. 사용자는 먼저 데이터 키 / 값 쌍의 중간 출력의 세트의 데이터 키 / 값 쌍에 기초하여, 설정에 기초하여 처리하는 매핑 함수를 생성하고, 그 중간 키 값과 동일한 값을 갖는 모든 중간 값을 결합하기 위해 사용되는 감소 함수를 생성한다.
프로그래밍을 줄일 수있는 간단한지도를 시뮬레이션
# ### 구현이지도는 프로그래밍을 줄일 수 있습니다. # ### 입력으로 일련의 숫자가 있습니다. 각 숫자는 7보다 더 얻을 수 있습니다. 마지막으로, 나머지 추가 오기 시간 으로 myList를 = 134,43,49,34,1,34,89,133,13434,379,134,4343,13434,34454,343,134 ] DEF의 잉여 (myNum에) . = myNum에 7 % 인쇄 경우 → # ## 위해 SLEEP의 첨가 효과를 관찰 time.sleep를 (1. ) 반환 DEF plus_all (myList에) mySum = 0을 위한 onesurplus 에서 :지도 (잉여으로 myList) mySum = mySum + onesurplus 반환 mySum IF __name__ == ' __main__ ' : 인쇄 (plus_all (mylist)로 바뀐다는)
以上实现了 一个最简单的map reduce 变成模型,只不过map任务仍然是单线程。在map的调用替换成多任务并发即可。以下用4线程并发调起map()。futures.ProcessPoolExecutor()默认调起线程是cpu的线程数。
# ### 구현이지도는 프로그래밍을 줄일 수 있습니다. # ### 입력으로 일련의 숫자가 있습니다. 각 숫자는 7보다 더 얻을 수 있습니다. 마지막으로, 나머지 추가 오기 시간 에서 동시 오기 선물 으로 myList = 134,43,49,34,1,34,89,133,13434,379,134,4343,13434,34454,343,134 ] DEF의 잉여 (myNum에) = % myNum에 . 7 # 인쇄 (A) 중 # ## 효과, SLEEP 첨가 관찰하기 위하여 time.sleep를 (1. ) 반환 DEF plus_all (myList에) mySum = 0 futures.ProcessPoolExecutor과 ( 4. AS 풀) 에 대한 onesurplus 에 pool.map (잉여으로 myList) mysum = mysum + onesurplus 복귀 mysum 경우 __name__ == ' __main__ ' : 인쇄 (plus_all (myList에))
요약 :
1과 동일한 공정 흐름에 의해 복수의 부분으로 모델, 제 태스크 프로그래밍을 감소 매핑. 쓰기지도 기능, 결과 세트가 해결 된 함수가 반환,
지도 작업을 호출하는 동시 스레드 2. 모든 처리지도 결과를 반환합니다.