我有一個 Azure 資料工廠管道,它并行啟動 4 個 Databricks 活動。
這 4 個活動幾乎做同樣的事情:在同一個資料庫中的 4 個不同的 SQL Server 表中寫入不同的資料
val df= spark.sql("SELECT * FROM TAB1")
df
.write
.format("com.microsoft.sqlserver.jdbc.spark")
.mode("overwrite")
.option("truncate", value = true)
.option("reliabilityLevel", "BEST_EFFORT")
.option("tableLock", "false")
.option("url", url)
.option("dbtable", "dbo.TAB1")
.option("user", u)
.option("password", p)
.option("schemaCheckEnabled", "false")
.option("batchsize", "1048576")
.save()
我們注意到,盡管作業成功執行,但有時它會失敗并顯示:
SQLServerException: The connection is closed error.
我們嘗試用 SQL 撰寫的資料需要 10 到 20 分鐘才能完全完成。
我在想也許我們并行執行 4 個作業的事實是問題的根源,但我不確定。
任何幫助表示贊賞。
uj5u.com熱心網友回復:
正如您所提到的,您正在并行運行 4 個 Databricks 活動,在這些活動中,您正在將資料寫入同一資料庫中的 4 個不同表,并且錯誤僅在有時發生 - 因此您很有可能面臨 SQL 的容量問題服務器端。
如果您使用的是 Azure SQL 資料庫,則可以升級該層,這應該可以正常作業。
此外,請確保Azure 集成運行時有足夠的核心和記憶體來并行運行 4 個管道。如果資料很大,則 IR 可能無法處理它。創建一個新的 IR 并使用它來運行您的管道。參考下圖。

或者,您可以串行而不是并行運行管道,這將為資料庫和 IR 留下足夠的記憶體來處理資料。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/450959.html
標籤:sql服务器 斯卡拉 阿帕奇火花 天蓝色数据工厂 数据块
