Я использую scalikejdbc для доступа к огромной таблице. Мое понимание - он извлекает все строки в память, прежде чем я смогу отобразить или перебрать их.Scalikejdbc result set итератор
В настоящее время у меня есть реализация с использованием rxscala Observable, что очень просто. Но приемник медленнее, чем чтение sql, а затем я получаю OutOfMemory из-за буферизации. Вот мой нынешний продюсер, как мог Observable:
def fetchProductsAsObservable(
sql: SQL[Nothing,NoExtractor],
extractor: (WrappedResultSet) => ProductItem)
) =
Observable[ProductItem](o =>
try {
sql.foreach(row => o.onNext(extractor(row)))
o.onCompleted()
} catch {
case e: Throwable => o.onError(e)
}
)
Я знаю метод SQL.foreach, но он получает метод обратного вызова и возвращает блок. Мой фон в .NET. Не могу понять, как правильно реализовать простой Iterator в scala с помощью scalikejdbc, который я могу дать для параллельной обработки?
Забота о том, чтобы показать часть вашего кода? – mfirry
уверен, под редакцией вопроса –