我正在使用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
解决了内存问题,但我仍在寻找更好的解决方案。
答案 0 :(得分:0)
尝试指定fetchSize
。
另请参阅:http://scalikejdbc.org/documentation/operations.html#setting-jdbc-fetchsize