我正在使用 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
,但我仍在寻找更好的解决方案。