0

我有这个代码片段:

val chunks = blob.map(_.id).distinct.grouped(100).toSeq 
val output = (for (chunk <- chunks) yield { 
  MyDataStore.batchGet("tablez", chunk.asJava, classOf[TableZ], true).asScala }).flatten

我想把它转换成一个通用的方法,它作为参数blob.map(_.id).distinctMyDataStore.batchGet("tablez", chunk.asJava, classOf[TableZ], true).asScala

我在想也许是咖喱函数,但不确定语法。

只是为了澄清,chunksis a Seq[Seq[String]]batchGet返回 a List[T]where Tis tablezoutputis Seq[TableZ]

4

1 回答 1

2

我认为以下将起作用:

def getInGroups[T,U](ids: Seq[T], groupSize: Int = 100)(getter: Seq[T] => Seq[U]): Seq[U] = {
   ids.grouped(groupSize).flatMap{ chunk =>  getter(chunk) }.toSeq
}

称它为

getInGroups(blob.map(_.id).distinct){ chunk => 
   MyDataStore.batchGet("tablez", chunk.asJava, classOf[TableZ], true).asScala
}
于 2012-08-13T02:27:56.853 回答