В предположении, что вы можете взять в память все сопоставления значений ключа и затем обработать большое в потоковом режиме.
import java.io.{File, PrintWriter}
import scala.io.Source
val kv_file = scala.io.Source.fromFile("key_values.csv")
// Construct a simple key value map
val kv : Map[String,String] = kv_file.getLines().map { line =>
val cols = line.split(";")
cols(0) -> cols(1)
}.toMap
val writer = new PrintWriter(new File("processed_big_file.csv" ))
big_file.getLines().foreach( line => {
// this is the key-value replace logic (as I understood)
val processed_cols = line.split(";").map { s => kv.getOrElse(s,s) }
val out_line = processed_cols.mkString(";");
writer.write(out_line)
})
// close file
writer.close()
В предположении, что вы не можете полностью загрузить сопоставление значений ключа тогда вы можете частично загрузить в память файл с картами "ключ-значение", а затем по-прежнему обрабатывать большой файл. Конечно, вам нужно много раз перебирать файлы, чтобы получить обработанные все ключи