У меня есть таблица с 4 миллионами записей и новые данные поступают ежедневно, и мне нужно обновить таблицу после обработки новых данных. В настоящее время я делаю это для этой цели. Я использую scala.Быстрое обновление от Spark Mysql
val batchSize = 1000
df.rdd mapPartitions (_ grouped batchSize) foreach { batch =>
{
val connection = getConnection();
val statement = connection.createStatement();
batch.foreach { row =>
val query = "UPDATE temp SET file_name='" + row.get(0) + " WHERE id=" + row.get(3);
statement.executeUpdate(query);
}
connection.close();
}
}
Это не точный запрос, но я делаю вот так. Для обновления таблицы требуется около 1 часа. Мне нужно улучшить производительность. Как я могу достичь производительности.
Да Я использую innoDB, а также индекс на ключ, но максимальные обновления в секунду - от 6000 до 7000, а на столе с 4 миллионами строк - около 11 минут. –
@AtifShahzad вы можете попробовать продолжить распараллеливание 'batch', какой тип данных это? вы можете использовать ключевое слово 'par' следующим образом:' (от 1 до 10000) .toArray.par' –
пакетный тип данных Seq [Row] –