你好,
我們正在努力將我們的一些代碼從“遺留”集群的多節點/共享集群,這樣我們可以開始使用統一目錄。然而,我們遇到一個問題與我們的一些代碼,調用存儲過程,在新的集群。社區可以提供,我將不勝感激任何指導。
我們遺留的配置是一個高並發集群(不是配置表的訪問控製)。集群,我們使用pyodbc執行存儲過程來讀/寫和更新SQL Azure數據庫中的表。
為此我們安裝unixodbc pyodbc作為集群的一部分啟動init文件(幾乎使用答案中概述的方法在這個線程https://stackoverflow.com/questions/54132249/how-to-install-pyodbc-in-databricks)。
一旦安裝,我們高興地調用存儲過程的SQL Azure數據庫集群從遺留(如上所述proc做各種各樣的讀、寫和更新)。
上周試圖將我們的代碼移動到“多節點/共享”集群與統一目錄,我們遇到了一個問題:即我們一直無法找到一種新的集群上執行存儲過程。
這是我們試過,我們發現:
方法1:嚐試使用pyodbc並安裝unix odbc驅動程序
同時pyodbc圖書館可以導入到筆記本新集群,當我們試著運行pyodbc我們得到以下消息表明所需的odbc驅動程序不可用。
當我們試圖手動運行odbc驅動程序的安裝告知我們沒有新集群的權限(僅供參考,試圖通過全球init驅動安裝也似乎沒有成功)。
我們的工作的理解為什麼會出現這種情況是“多節點/共享”集群更鎖定配置和不允許根級別的修改(比如安裝新驅動程序)。那聽上去對嗎?
方法2:切換到使用Jdbc來運行存儲過程
集群使用我們的遺產,我們適應我們執行存儲過程的方式,把pyodbc的圖片。相反,我們執行存儲過程使用jdbc。(以下線程提供了一個示例如何試圖這樣做https://stackoverflow.com/questions/60354376/how-to-execute-a-stored-procedure-in-azure-databricks-p..。
同時我們得到了這種方法在我們的遺產集群,集群在“多節點/共享”我們得到以下錯誤通知我們有一個包白名單的問題。
py4j.security。公共靜態java.sql Py4JSecurityException:方法。以連接java.sql.DriverManager.getConnection(以,以)拋出java.sql。SQLException異常類類java.sql.DriverManager不是白名單
方法三:使用Jdbc直接插入
使用多節點/共享集群我們已經成功地使用jdbc讀寫到Azure然而從我們可以看到SQL表沒有辦法運行一個更新使用jdbc所以這不是一個理想的解決方案,但我們積極變通方法。
之前接受我們的命運和遠離執行存儲過程(反正我知道很多建議但將導致相當多的努力),我想檢查社區是否有任何想法嗎?
謝謝提前
看一看在Azure為“自動化帳戶”可以添加webhook調用過程。此外,您可以使用方法3使用Jdbc直接插入。