取消
顯示的結果
而不是尋找
你的意思是:

麵臨問題而執行DDL和DML查詢12.0集群運行時版本。

YSDPrasad
新的貢獻者三世

你好,

目前我們使用的是司機:Standard_D32s_v3·工人:Standard_D32_v3·2 - 8工人·6.4擴展支持(包括Apache火花2.4.5,Scala 2.11)集群。我們24/7運行流筆記本的觸發每一分鍾和5管道具有不同時間線觸發器。當我們開始24小時後的所有觸發器正常執行。後來流和管道相關的筆記本開始失敗了。這意味著筆記本執行時間增加,每個命令采取更多的時間來執行。集群指標上圖顯示24小時之後集群指標執行。

https://dbricks.co/3VWeuRJ經過這個鏈接我開始升級12.0運行時版本。對於這個我麵臨問題而執行DDL和DML以下格式的查詢。

進口com.microsoft.azure.sqldb.spark.config.Config

進口com.microsoft.azure.sqldb.spark.connect._

進口com.microsoft.azure.sqldb.spark.query._

val查詢= "截斷表的表"

val配置=配置(地圖(

“url”- > dbutils.secrets。得到(=“azurekeyvault-scope”範圍,鍵=“DW-URL”),

“數據庫名”- > dbutils.secrets。得到(=“azurekeyvault-scope”範圍,鍵=“DW-DBName”),

“用戶”- > dbutils.secrets。得到(=“azurekeyvault-scope”範圍,鍵=“DW-Username”),

“密碼”- > dbutils.secrets。得到(=“azurekeyvault-scope”範圍,鍵=“DW-Password”),

“queryCustom”- >查詢

))

sqlContext.sqlDBQuery(配置)

誰能建議的方法來解決我的問題的最佳方法。

感謝和問候。

1接受解決方案

接受的解決方案

YSDPrasad
新的貢獻者三世

嗨Suteja,

我們驗證代碼和刪除不必要的命令還我們仍麵臨的問題。我們嚐試清除緩存使用spark.catalog.clearCache()這段代碼。在集群的性能仍然沒有改變。

截斷表現在好工作。我發現不同的查詢的執行12.0運行時版本。

進口java.sql。{連接、DriverManager語句}

val jdbcUrl = dbutils.secrets。得到(=“azurekeyvault-scope”範圍,鍵=“nycsqlserver-DW-ConnectionString”)

用戶= dbutils.secrets瓦爾。得到(=“azurekeyvault-scope”範圍,鍵=“DW-Username”)

= dbutils.secrets val密碼。得到(=“azurekeyvault-scope”範圍,鍵=“DW-Password”)

val updateQuery = "截斷表的表"

康涅狄格州var:連接= null

var支撐:聲明= null

嚐試{

康涅狄格州= DriverManager。getConnection (jdbcUrl、用戶密碼)

支撐= conn.createStatement ()

stmt.executeUpdate (updateQuery)

}catch {

例e:異常= > e.printStackTrace ()

最後}{

如果(支撐! = null) stmt.close ()

如果(康涅狄格州! = null) conn.close ()

}

通過使用上麵的代碼可以執行查詢。

定期重啟部分有機會提高性能與重新啟動集群。別的,有沒有自動集群啟動選項可以在磚,避免手動重啟。

在原帖子查看解決方案

5回複5

匿名
不適用

普拉薩德@Someswara杜爾迦Yaralgadda:我給你一些想法如何考慮這個問題。請測試並實現什麼最適合你。

有幾件事你可以做筆記本的性能優化:

  1. 考慮使用集群更高的性能和更強大的工人如果你當前的集群節點正在努力跟上你的工作負載。
  2. 優化你的查詢來改善他們的表現。例如,您可以嚐試使用更高效的SQL查詢或優化你的數據管道減少處理的數據量。
  3. 如果你正在經曆緩慢的查詢性能,考慮使用緩存或優化你的數據存儲,以提高查詢速度。
  4. 避免不必要的代碼運行在你的筆記本。這樣會拖慢整體執行時間和不必要的消耗資源。

關於你麵臨的具體問題,刪除一個表可以是資源密集型的操作,可能需要更長的時間來執行更大的表。你可能想要考慮優化表模式或分區數據來提高查詢的性能。此外,你可以嚐試使用DROP TABLE語句代替截斷表,它有時會更快。

最後,如果你的筆記本運行24/7,這可能是一個好主意,定期啟動內核釋放任何資源隨著時間的推移,可能已經被消費。

YSDPrasad
新的貢獻者三世

嗨Suteja,

我們驗證代碼和刪除不必要的命令還我們仍麵臨的問題。我們嚐試清除緩存使用spark.catalog.clearCache()這段代碼。在集群的性能仍然沒有改變。

截斷表現在好工作。我發現不同的查詢的執行12.0運行時版本。

進口java.sql。{連接、DriverManager語句}

val jdbcUrl = dbutils.secrets。得到(=“azurekeyvault-scope”範圍,鍵=“nycsqlserver-DW-ConnectionString”)

用戶= dbutils.secrets瓦爾。得到(=“azurekeyvault-scope”範圍,鍵=“DW-Username”)

= dbutils.secrets val密碼。得到(=“azurekeyvault-scope”範圍,鍵=“DW-Password”)

val updateQuery = "截斷表的表"

康涅狄格州var:連接= null

var支撐:聲明= null

嚐試{

康涅狄格州= DriverManager。getConnection (jdbcUrl、用戶密碼)

支撐= conn.createStatement ()

stmt.executeUpdate (updateQuery)

}catch {

例e:異常= > e.printStackTrace ()

最後}{

如果(支撐! = null) stmt.close ()

如果(康涅狄格州! = null) conn.close ()

}

通過使用上麵的代碼可以執行查詢。

定期重啟部分有機會提高性能與重新啟動集群。別的,有沒有自動集群啟動選項可以在磚,避免手動重啟。

匿名
不適用

普拉薩德@Someswara杜爾迦Yaralgadda:

我很高興聽到你能夠解決問題與執行DDL查詢新的運行時版本。

關於你問題定期重新啟動集群來提高性能,這是一種常見的做法,防止長時間運行的集群變得不穩定,並確保集群資源被有效利用。通過定期重新啟動集群,您可以發布任何積累資源和刷新運行時環境,它可以幫助優化性能。

然而,手動重新啟動集群可能是耗時的,並且可能導致中斷正在進行的工作負載。磚集群提供了一個自動終止功能,允許您指定的時間或時間活躍集群,集群之後,將自動終止。這個特性可以幫助你節省成本,確保集群隻需要運行時,它也可以幫助確保集群定期刷新,以優化性能。

集群啟用自動終止,可以導航到磚中的集群設置工作區並選擇“自動終止”選項。從那裏,您可以指定的最大空閑時間或持續時間集群,集群之後,將自動終止。

除了集群自動終止,你也可以考慮優化代碼和工作負載來減少所需的內存和計算資源集群。這可以包括修剪技術,如數據,緩存,分區,以及優化代碼和查詢減少需要處理的數據量。通過優化你的工作負載和資源,可以幫助確保您的集群運行效率和成本效益。

Kaniz
社區經理
社區經理

嗨@Someswara杜爾迦Prasad Yaralgadda(客戶),我們沒有收到你自從上次反應@Suteja卡努裏人(客戶),我檢查看看她的建議幫助你。

否則,如果你有任何解決方案,請與社區分享,因為它可以幫助別人。

同時,請別忘了點擊“選擇最佳”按鈕時提供的信息幫助解決你的問題。

歡迎來到磚社區:讓學習、網絡和一起慶祝

加入我們的快速增長的數據專業人員和專家的80 k +社區成員,準備發現,幫助和合作而做出有意義的聯係。

點擊在這裏注冊今天,加入!

參與令人興奮的技術討論,加入一個組與你的同事和滿足我們的成員。

Baidu
map