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

了解當Databricks集群由於庫衝突而取消Python命令執行時應采取的措施。

寫的亞當Pavlacka

最後發布時間:2022年5月19日

問題

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

導致

當您安裝庫的衝突版本時,例如ipythonipywidgetsnumpyscipy,或熊貓PYTHONPATH環境,那麼Python REPL就會中斷,導致所有命令返回取消了後30秒。這也會破壞%sh,這個筆記本宏允許您在Python筆記本單元格中輸入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  . zip

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

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

  1. 如果初始化腳本不存在,創建一個基本目錄來存儲它:
    % sh dbutils.fs.mkdirs(“dbfs: /磚/ <目錄> /”)
  2. 創建以下腳本:
    % sh dbutils.fs.put(" /磚/ init /集群名稱/ <庫名稱> . 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腳本標簽:初始腳本選項卡映像。
  6. 目的地下拉,選擇DBFS,提供腳本的文件路徑,單擊添加
  7. 重新啟動集群。