由於庫衝突,集群取消Python命令執行

了解當Databricks集群由於庫衝突而取消Python命令執行時該如何處理。

寫的亞當Pavlacka

最後發布日期:2022年5月19日

問題

集群返回取消了在Python筆記本裏。所有其他語言的筆記本在同一集群上成功執行。

導致

當您安裝庫的衝突版本時,例如ipythonipywidgetsnumpyscipy,或熊貓PYTHONPATH環境,則Python REPL可能會中斷,導致所有命令返回取消了30秒後。這也會破壞%sh, notebook宏允許您在Python notebook單元格中輸入shell腳本。

刪除

信息

解決方案

要解決這個問題,可以采取以下措施:

  1. 識別衝突的庫並卸載它。
  2. 在筆記本或集群範圍的init腳本中安裝正確版本的庫。

識別衝突的庫

  1. 每次卸載一個庫,並檢查Python REPL是否仍然崩潰。
  2. 如果REPL仍然崩潰,重新安裝您刪除的庫並刪除下一個庫。
  3. 當您發現導致REPL崩潰的庫時,使用下麵兩種方法之一安裝該庫的正確版本。

你也可以檢查驅動程式日誌(std.err)用於集群(在集群配置頁麵上),以獲取堆棧跟蹤和錯誤消息,這些消息可以幫助識別庫衝突。

安裝正確的庫

做以下其中一項。

選項1:使用pip3安裝在筆記本電腦中

%sh sudo apt-get -y install python3-pip pip3 install  . sh

選項2:使用集群範圍的init腳本進行安裝

按照以下步驟創建一個集群範圍的初始化腳本(AWS|Azure|GCP),以安裝正確的庫版本。取代<庫名稱>在示例中使用要安裝的庫的文件名。

  1. 如果init腳本不存在,創建一個基本目錄來存儲它:
    % sh dbutils.fs.mkdirs(“dbfs: /磚/ <目錄> /”)
  2. 創建以下腳本:
    %sh dbutils.fs.put("/databricks/init/cluster-name/.sh",""" #!/bin/bash sudo apt-get -y install python3-pip sudo pip3 install  """, True)
  3. 確認腳本存在:
    % sh顯示器(dbutils.fs.ls(“dbfs: /磚/ <目錄> / <庫名稱> . sh "))
  4. 進入集群配置界麵(AWS|Azure|GCP),並按高級選項切換。
  5. 在頁麵底部,單擊Init腳本標簽:Init Scripts選項卡鏡像。
  6. 目的地下拉,選擇DBFS,提供腳本的文件路徑,單擊添加
  7. 重新啟動集群。