В качестве доказательства концепции я создаю чрезвычайно простой поисковый робот Twitter Friends. Вот что он будет делать:
- Выполнить CrawlJob для учетной записи Twitter "twitter-user-1"
- Найти всех друзей "twitter-user-1"
- Выполнить 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, подготовленные для всех взаимодействий с твиттером. Нужны некоторые примеры, чтобы понять, как создавать новые задания в рамках существующего задания и связывать его с исходной задачей.
Спасибо | Шриранган