問題
您正在啟動導入外部庫的作業,並得到導入錯誤。
當作業導致節點重新啟動時,作業失敗,報錯信息如下:
沒有名為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腳本命令將庫安裝到集群。