1

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 サーバー テーブルの構成を変更する必要があるかどうか、誰か教えてください。

前もって感謝します。

4

0 に答える 0