В качестве доказательства концепции я создаю этот чрезвычайно простой сканер 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, подготовленные для всего взаимодействия с твиттером. Нужно несколько примеров, чтобы понять, как создавать новые рабочие места в существующей работе и связать ее с исходной задачей.
Спасибо | Srirangan