Я пишу код для обновления всей таблицы в Кассандре.Я использую fetchSize и setPagingState, чтобы прочитать «большую» таблицу на блок (и избежать тайм-аута). Моя проблема в том, что он считает количество строк выше, чем должно.Я полагаю, что когда он обновляет некоторые строки, он изменяет состояние и перечитывает. Есть ли совет, чтобы избежать этого?В моем случае таблица имеет 400 тыс. Строк, и черта найти 85 млн. Строк
в отношении Жан-Люка
val insertPrepareStmt = userSession.prepare(s"INSERT INTO $table (id, value) VALUES (?, ?)")
val stmt = userSession.prepare(s"SELECT id,value FROM $table").bind()
var nextPage:Option[PagingState]=None
var i:Int=0
var nbConverted:Int=0
do {
nextPage match {
case Some(p) => stmt. setPagingState(p)
case _ =>
}
val rs= userSession.execute(stmt.setFetchSize(batchSize))
nextPage=Option(rs.getExecutionInfo.getPagingState)
// loop on rs
for (row <- rs.all() )
{
val id=row.getString("id")
val value =row.getByteArray("value")
// modify value in newAvro
val newAvrp= f(avro)
userSession.executeAsync(insertPrepareStmt.bind(id,ByteBuffer.wrap(newAvro)))
nbConverted+=1
}
i+=1
if (i % 10000==0) logger.error(s"...number lines $i number converted lines $nbConverted")
}
} while (nextPage.isDefined)