庫不可用導致作業失敗

了解如何解決由於庫不可用而導致的Databricks作業失敗。

寫的亞當Pavlacka

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

問題

您正在啟動導入外部庫的作業,並得到導入錯誤。

當作業導致節點重新啟動時,作業失敗,報錯信息如下:

沒有名為XXX的模塊

導致

集群管理器是Databricks服務的一部分,用於管理客戶Apache Spark集群。當它重新啟動每個節點時,它會發送命令來安裝Python和R庫。有時,庫安裝或從internet下載工件所花費的時間可能比預期的要長。這是由於網絡延遲造成的,或者如果附加到集群的庫有許多依賴庫,就會發生這種情況。

庫安裝機製保證當筆記本附加到集群時,它可以導入已安裝的庫。當通過PyPI安裝庫的時間過長時,筆記本會在庫安裝完成之前就掛載到集群中。在這種情況下,筆記本無法導入庫。

解決方案

方法1

在筆記本中使用筆記本範圍的庫安裝命令。您可以在一個單元格中輸入以下命令,這將確保安裝所有指定的庫。

%sh dbutls .library. installpypi ("mlflow") dbutls .library. restartpython ()

方法2

AWS

為了避免從internet存儲庫下載庫的延遲,您可以將庫緩存到DBFS或S3中。

例如,您可以將Python庫的wheel或egg文件下載到DBFS或S3位置。您可以使用REST API或集群範圍的初始化腳本從DBFS或S3安裝庫。

首先,將wheel或egg文件從internet下載到DBFS或S3位置。這可以在筆記本上執行,如下所示:

刪除

Azure

為了避免從internet存儲庫下載庫的延遲,您可以將庫緩存到DBFS或Azure Blob Storage中。

例如,您可以將Python庫的wheel或egg文件下載到DBFS或Azure Blob存儲位置。您可以使用REST API或集群範圍的初始化腳本從DBFS或Azure Blob Storage安裝庫。

首先,將wheel或egg文件從互聯網下載到DBFS或Azure Blob存儲位置。這可以在筆記本上執行,如下所示:

刪除
%sh CD /dbfs/mnt/library wget  . sh

在wheel或egg文件下載完成後,您可以使用REST API、UI或init腳本命令將庫安裝到集群。