問題
您具有在自定義雞蛋或輪轂文件中定義的Python函數,並且還具有安裝在群集上的另一個客戶軟件包滿足的依賴項。
當您調用此功能時,它會返回一個錯誤,說無法滿足要求。
org.apache.spark.SparkException: Process List(/local_disk0/pythonVirtualEnvDirs/virtualEnv-d82b31df-1da3-4ee9-864d-8d1fce09c09b/bin/python, /local_disk0/pythonVirtualEnvDirs/virtualEnv-d82b31df-1da3-4ee9-864d-8d1fce09c09b/bin/pip,install,fractal == 0.1.0,-disable-pip-version-check),由代碼1退出。找不到滿足需求fractal == 0.1.0的版本(來自版本:0.1.1,0.1.2、0.2.1、0.2.2、0.2.3、0.2.4、0.2.5、0.2.6、0.2.7、0.2.8、0.2.9、0.3.0)
例如,想象一下,您同時安裝了車輪A和Wheel B,要麼通過UI或通過筆記本電腦分割的庫安裝到群集上。假設車輪A對車輪B有依賴性。
- dbutils.library.install(/path_to_wheel/a.whl)
- dbutils.library.install(/path_to_wheel/b.whl)
當您嚐試使用這些庫之一撥打電話時,您將獲得要求無法滿足錯誤。
原因
即使通過群集UI或通過筆記本庫庫安裝安裝所需的依賴項來滿足要求,Databricks也無法保證在集群上安裝特定庫的順序。如果正在引用庫,並且尚未將其分發給執行器節點,則它將退回到PYPI並在本地使用它來滿足要求。
解決方案
您應該使用一個包含所有必需的代碼和依賴項的雞蛋或輪檔。這樣可以確保您的代碼在運行時加載並提供正確的庫。