Установите rgdal и rgeos на Azure Databricks.

Я не могу установить rgdal и rgeos на Databricks, есть предложения?

configure: error: gdal-config not found or not executable.
ERROR: configuration failed for package ‘rgdal’
* removing ‘/databricks/spark/R/lib/rgdal’

configure: error: geos-config not found or not executable.
ERROR: configuration failed for package ‘rgeos’
* removing ‘/databricks/spark/R/lib/rgeos’

person user3706794    schedule 24.02.2019    source источник


Ответы (1)


Вот один из способов установить rgdal и rgeos на R в Azure Databricks. Шаги 1 и 2 необходимо выполнять каждый раз при запуске кластера. Шаг 1 можно автоматизировать (см. ниже), но шаг 2 необходимо выполнить вручную в отдельном сценарии или добавить в начало вашего сценария R.

Шаг 1

Сначала вам нужно установить gdal и geos на Linux-машины в вашем кластере. Это можно сделать с помощью сценария bash в записной книжке с блоками данных. %s — это волшебная команда, которая позволяет этой ячейке запускать сценарий оболочки.

%sh
#!/bin/bash

#Start by updating everything
sudo apt-get update

##############
#### rgdal

#This installs gdal on the linux machine but not the R library (done in R script)
#See https://databricks.com/notebooks/rasterframes-notebook.html
sudo apt-get install -y gdal-bin libgdal-dev

#To be able to install the R library, you also need libproj-dev 
#See https://philmikejones.me/tutorials/2014-07-14-installing-rgdal-in-r-on-linux/
sudo apt-get install -y libproj-dev 

##############
#### rgeos

#This installs geos on the linux machine but not the R library (done in R script)
#See https://philmikejones.me/tutorials/2014-07-14-installing-rgdal-in-r-on-linux/
sudo apt install libgeos++dev

Однако это раздражает, когда приходится каждый раз запускать вручную, поэтому вы можете создать сценарий инициализации, который запускается каждый раз при запуске кластера. Поэтому в блокноте python скопируйте этот код в ячейку. Скрипты в dbfs:/databricks/init/<name_of_cluster> будут запускаться при запуске для кластеров с таким именем.

#This file creates a bash script called install_packages.sh. The cluster run this file on each startup.
# The bash script will be anything inside the variable script 

clusterName = "RStudioCluster"
script = """#!/bin/bash

#Start by updating everything
sudo apt-get update

##############
#### rgdal

#This installs gdal on the linux machine but not the R library (done in R script)
#See https://databricks.com/notebooks/rasterframes-notebook.html
sudo apt-get install -y gdal-bin libgdal-dev

#To be able to install the R library, you also need libproj-dev 
#See https://philmikejones.me/tutorials/2014-07-14-installing-rgdal-in-r-on-linux/
sudo apt-get install -y libproj-dev 

##############
#### rgeos

#This installs geos on the linux machine but not the R library (done in R script)
#See https://philmikejones.me/tutorials/2014-07-14-installing-rgdal-in-r-on-linux/
sudo apt install libgeos++dev

"""
dbutils.fs.put("dbfs:/databricks/init/%s/install_packages.sh" % clusterName, script, True)

Шаг 2

Пока что вы только что установили gdal и geos на Linux-машины в кластере. На этом шаге вы установите пакет R rgdal. Однако последние версии rgdal несовместимы с самой последней версией gdal, доступной с apt-get. Подробнее см. здесь. альтернативные способы решить эту проблему, но если вас устраивает более старая версия rgdal, то самый простой обходной путь — установить версию 1.2-20 rgdal. Это можно сделать в блокноте R из блоков данных или в приложении для блоков данных Rstudio следующим образом:

require(devtools)
install_version("rgdal", version="1.2-20")
install.packages("rgeos")

Настройка выполнена

Затем вы можете импортировать эти библиотеки, как обычно:

library(rgdal)
library(rgeos)
person TheIceBear    schedule 24.08.2020