問題
您正在嚐試安裝Cartopy在集群上,您會收到一個ManagedLibraryInstallFailed錯誤消息。
java.lang.RuntimeException: ManagedLibraryInstallFailed: org.apache.spark.SparkException: Process List(/databricks/python/bin/pip, install, cartopy==0.17.0,——disable-pip-version-check) exited with code 1。ERROR: Command ERROR out with exit status 1: Command: /databricks/python3/bin/python3.7 /databricks/python3/lib/python3.7/site-packages/pip/_vendor/pep517/_in_process.py get_requires_for_build_wheel /tmp/tmpjoliwaky cwd: /tmp/pip-install-t324easa/cartopy完整輸出(3行):setup.py:171: UserWarning: Unable to determine GEOS version. py . /確保安裝了3.3.3或更高版本,否則可能會安裝失敗。'.'.join(str(v) for v in GEOS_MIN_VERSION),))必須安裝Proj 4.9.0。---------------------------------------- ERROR: Command ERROR out with exit status 1: /databricks/python3/bin/python3.7 /databricks/python3/lib/python3.7/site-packages/pip/_vendor/pep517/_in_process.py get_requires_for_build_wheel /tmp/tmpjoliwaky查看日誌是否有完整的命令輸出。圖書館:PythonPyPiPkgId (cartopy,一些(0.17.0),列表()),isSharedLibrary = false
導致
Cartopy依賴於libgeos3.3.3及以上及libproj4.9.0.如果libgeos而且libproj未安裝,Cartopy安裝失敗。
解決方案
配置集群範圍的初始化腳本(AWS|Azure|GCP)自動安裝Cartopy以及所需的依賴關係。
- 如果基本目錄不存在,則創建用於存儲初始化腳本的基本目錄。在這裏,使用dbfs: /磚/ <目錄>舉個例子。
% sh dbutils.fs.mkdirs(“dbfs: /磚/ <目錄> /”)
- 創建腳本並將其保存到一個文件中。
%sh dbutls .fs.put("dbfs:/databricks/
/cartopy.sh",""" #!/bin/bash sudo apt-get install libgeos++-dev -y sudo apt-get install libprox -dev -y /databricks/python/bin/pip install Cartopy """,True) - 檢查腳本是否存在。
% python顯示器(dbutils.fs.ls(“dbfs: /磚/ <目錄> / cartopy.sh”))
- 2 .在集群配置界麵,單擊高級選項切換。
- 在頁麵底部,單擊Init腳本選項卡。
- 在目的地下拉,選擇“DBFS”,提供腳本的文件路徑,單擊添加.
- 重新啟動集群。