Thinking about this more, it might be best to provide an api that lets you provide a batchSize, and just return an Iterable[Future[(K, V)]].  The other possibility would be to supply a new Cursor abstraction, which lets you specify a batch size.

class Cursor[A] {
  def fetch(batchSize: Int): Future[Seq[A]]
}