分批迭代大结果集(如foreach,但已分组)

时间:2016-06-06 17:52:24

标签: scalikejdbc

我正在使用ScalikeJDBC来获取一个大表,将数据转换为JSON,然后调用每个包含50个JSON对象(行)的Web服务。这是我的代码:

val rows = sql"SELECT * FROM bigtable"
val jsons = rows.map { row =>
  // build JSON object for each row
}.toList().apply()
jsons.grouped(50).foreach { batch =>
  // send 50 objects at once to an HTTP server
}

这很有效,但不幸的是,中间列表非常庞大,占用了大量内存。我正在寻找一种以“懒惰”的方式迭代结果集的方法,类似于foreach,除了我想迭代50行的批次。这可能与ScalikeJDBC有关吗?

我通过填写和清除可变列表而不是使用grouped解决了内存问题,但我仍在寻找更好的解决方案。

1 个答案:

答案 0 :(得分:0)