2010-04-02 2 views
7

현재 Disco에서 PageRank를 구현 중입니다. 반복 알고리즘으로서, 하나의 반복의 결과는 다음 반복의 입력으로 사용됩니다.Disco/MapReduce : 이전 반복의 결과를 새로운 반복에 대한 입력으로 사용

모든 링크를 나타내는 큰 파일이 있습니다. 각 파일은 각 행이 페이지를 나타내며 링크의 값을 나타냅니다.

Disco의 경우이 파일을 N 개의 청크로 분해 한 다음 MapReduce를 한 번 실행합니다. 결과적으로, 나는 (페이지, 랭크) 튜플 세트를 얻는다.

이 순위를 다음 반복에 제공하고 싶습니다. 그러나 이제는 내 매퍼에 두 개의 입력이 필요합니다. 그래프 파일과 페이지 랭크입니다. 나는 각 라인은 페이지를 나타내는 하도록에 함께 "우편"그래프 파일 및 페이지 순위,하고 싶은

  1. , 그것은 계급이고, 그것은 연결을합니다. 이 그래프 파일 N 청크로 분리되므로
  2. 제가 청크

를 N으로 평행 청크 랭크 벡터를 분할해야하고 그래프 영역을 랭크 벡터 지퍼이 모두 더 보인다 복잡하지 않으며, 단순한 조작으로 (전형적인 mapreduce 알고리즘으로), 나는 접근법을 정말로 단순화 할 수있는 Disco에 관해 뭔가를 잃어 가고있는 것처럼 보입니다.

의견이 있으십니까?

답변

1

첫 번째 패스에는 init_map을 사용하고 이후의 각 반복마다 iter_map을 사용하는 것처럼 보입니다.

은 참조 : http://discoproject.org/doc/faq.html#id7

할 수 있습니다 아웃 링크를 대신 상대 (페이지 순위) 튜플을 포함 출력 파이썬 객체?

또 다른 옵션은 아웃 링크를 어딘가에 (dict, memcache, kyotocabinet, 등등 ...) 페이지에 의해 키잉하여 매핑 기능에서 찾아 보는 것입니다. 디스코와 사슬을 매고 있다면, 나는 워크 플로우의 한가운데서 물건들을 하나로 묶고 싶지 않을 것이라고 생각합니다.