2011-03-09 2 views
1

개념 증명으로이 극히 단순한 Twitter Friends 크롤러를 구축하고 있습니다. 여기가 무엇을 할 것입니다 :GridGain/Scala - 기존 작업 내에서 작업 생성

  1. 트위터 계정 CrawlJob 실행 "트위터 사용자-1"
  2. "트위터 사용자-1"
  3. 이 모든 친구 CrawlJob 실행의 모든 ​​친구를 찾아 "twitter- 사용자-1 "

여기 내 코드는 지금까지의 모습입니다 :

def main(args:Array[String]) { 

    scalar { 
    grid.execute(classOf[CrawlTask], "twitter-user-1").get 
    } 

} 

class CrawlTask extends GridTaskNoReduceSplitAdapter[String] { 

    def split(gridSize:Int, arg:String): Collection[GridJob] = { 
     val jobs:Collection[GridJob] = new ArrayList[GridJob]() 
     val initialCrawlJob = new CrawlJob() 
     initialCrawlJob.twitterId = arg 
     jobs.add(initialCrawlJob) 
     jobs 
    } 

} 

class CrawlJob extends GridJob { 

    var twitterId:String = new String() 

    def cancel() = { 
    println("cancel - " + twitterId) 
    } 

    def execute():Object = { 
    println("fetch friends for - " + twitterId) 
    // Fetch and execute CrawlJobs for all friends 
    return null 
    } 

} 

나는 모든 트위터 INTE 준비 자바 서비스가 폭동. 기존 작업에서 새 작업을 작성하고 원래 작업과 연관시키는 방법을 이해하려면 몇 가지 예가 필요합니다.

감사합니다. 스리랑간

답변

0

어떻게이 문제가 있었습니까?

개념적으로 GridTasks 및 GridJobs를 통합하십시오. MySpecialGridTask는 하나의 MySpecialGridJob 만 가질 수 있습니다.

그런 다음 작업 또는 작업에서 새 GridTasks를 쉽게 실행할 수 있습니다. 위의 예에서

:

class CrawlJob extends GridJob { 

    var twitterId:String = new String() 

    def cancel() = { 
    println("cancel - " + twitterId) 
    } 

    def execute():Object = { 
    println("fetch friends for - " + twitterId) 
    // Fetch and execute CrawlJobs for all friends 
    // Execute Job Here 
    grid.execute(classOf[CrawlTask], "twitter-user-2").get 
    grid.execute(classOf[CrawlTask], "twitter-user-3").get 
    return null 
    } 

} 
에서 내 솔루션의
+0

상세 설명 ... http://srirangan.net/2011-03-build-a-simple-web-crawler-with-scala- 그리드 게인 – Sri

관련 문제