我有这段代码:
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).distinct
和MyDataStore.batchGet("tablez", chunk.asJava, classOf[TableZ], true).asScala
我在考虑可能是函数但不确定语法。
为了澄清,chunks
是Seq[Seq[String]]
,batchGet
返回List[T]
,其中T
是tablez
,output
是Seq[TableZ]
。
答案 0 :(得分: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
}