0

batchsizeこのオプションが、spark jdbc を使用した挿入操作にどのような影響を与えるかを知りたかったのです。これは、一括挿入に似た 1 つの挿入コマンドを使用する一括挿入または最後にコミットされる挿入コマンドのバッチを意味しますか?

これはドキュメントに明確に記載されていないため、誰かが明確にすることができますか?

4

1 に答える 1

2

ソース コードによると、オプションは のメソッドにbatchsize使用され、実行のためにコマンドのバッチをデータベースに送信できます。executeBatchPreparedStatement

キーコード:

val stmt = conn.prepareStatement(insertStmt)
while (iterator.hasNext) {
  stmt.addBatch()
  rowCount += 1
  if (rowCount % batchSize == 0) {
      stmt.executeBatch()
      rowCount = 0
    }
}

if (rowCount > 0) {
     stmt.executeBatch()
}

あなたの質問に戻りますが、あるのは事実です

挿入コマンドのバッチ

しかし、これらの挿入の一部のみが正常に実行されても問題ないため、ステートメントgets committed at the endは間違っています。ここには追加の取引要件はありません。ところで、指定されていない場合、Spark はデフォルトの分離レベルを採用します。

于 2021-11-25T02:06:00.207 に答える