0
私は4百万のレコードを持つテーブルを持っています。新しいデータは毎日更新されています。新しいデータを処理した後にテーブルを更新する必要があります。現在私はこの目的のためにこれをやっています。私はスカラを使用しています。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を使用していますが、キーのインデックスも持っていますが、1秒あたりの最大更新数は6000〜7000であり、4million行のテーブルでは約11分かかります。 –
@AtifShahzadさらにバッチを並列化しようとすると、どのデータ型ですか? '(1〜10000).toArray.par' –
バッチデータ型はSeq [行]です。 –