SparkSQL JDBC Writer を使用して、ハイブ テーブルから SQLServer テーブルに 5,000 万行を挿入しようとしています。以下は、データを挿入するために使用しているコード行です。
mdf1.coalesce(4).write.mode(SaveMode.Append).jdbc(connectionString, "dbo.TEST_TABLE", connectionProperties)
以下のエラーで 1,000 万行を処理した後、spark ジョブが失敗する
java.sql.BatchUpdateException: SQL Server データベース エンジンのインスタンスは、現時点で LOCK リソースを取得できません。アクティブなユーザーが少なくなったら、ステートメントを再実行してください。データベース管理者に依頼して、このインスタンスのロックとメモリの構成を確認するか、実行時間の長いトランザクションを確認してください。
しかし、以下のコード行を使用すると、同じジョブが成功します。
mdf1.coalesce(1).write.mode(SaveMode.Append).jdbc(connectionString, "dbo.TEST_TABLE", connectionProperties)
パフォーマンスを最適化するために、SQLServer への 4 つの並列接続を開こうとしています。しかし、1000万行を処理した後、ジョブは「ロックを取得できません」というエラーで失敗し続けます。また、データフレームを数百万行(1000万未満)に制限すると、4つの並列接続でもジョブは成功します
SparkSQL を使用して膨大な量のデータを RDBMS にエクスポートできるかどうか、また SQL サーバー テーブルの構成を変更する必要があるかどうか、誰か教えてください。
前もって感謝します。