GridGain / Scala — создание заданий в рамках существующего задания

В качестве доказательства концепции я создаю чрезвычайно простой поисковый робот Twitter Friends. Вот что он будет делать:

  1. Выполнить CrawlJob для учетной записи Twitter "twitter-user-1"
  2. Найти всех друзей "twitter-user-1"
  3. Выполнить CrawlJob для всех друзей "twitter-user-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
  }

}

У меня есть сервисы Java, подготовленные для всех взаимодействий с твиттером. Нужны некоторые примеры, чтобы понять, как создавать новые задания в рамках существующего задания и связывать его с исходной задачей.

Спасибо | Шриранган


person Sri    schedule 09.03.2011    source источник


Ответы (1)


Как я обошёл это?

Концептуально объединить GridTasks и GridJobs. MySpecialGridTask может иметь только одно задание MySpecialGridJob.

Затем можно легко выполнять новые GridTask в задаче или задании.

В приведенном выше примере:

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
  }

}
person Sri    schedule 10.03.2011
comment
Подробное объяснение моего решения на ... srirangan.net/ - person Sri; 10.03.2011