【问题标题】:Installing c libraries needed for R spatial packages on databricks clusters在 databricks 集群上安装 R 空间包所需的 c 库
【发布时间】:2021-02-11 00:33:31
【问题描述】:

R 中的空间包通常依赖于 C 库进行数值计算。如果 R 引擎无法使用默认权限安装这些库,则在安装依赖这些库的 R 包时会出现问题。看来,databricks 集群给 R 带来了这样的障碍。我想有两种方法可以解决这个问题,1)使用相关脚本创建一个 docker 容器来安装软件包,或者 2)通过 init 脚本安装它们。我认为后一种方法会更容易,但我遇到了一些问题。集群无法启动,因为我的 init 脚本无法执行。见下文-我也试过sudo

set -euxo pipefail

apt install libgeos-dev
apt install libudunits2-dev
apt install libgdal-dev

相关,这些应该只安装在驱动节点上吗?我看不出他们需要在工作节点上的原因。上面的代码将它安装在我认为的工人和司机身上。要安装在驱动程序上,我想它会是:

if [[ $DB_IS_DRIVER = "TRUE" ]]; then
apt install libgeos-dev
apt install libudunits2-dev
apt install libgdal-dev

【问题讨论】:

  • 初始化脚本出现什么错误?
  • 没有错误,初始化脚本永远不会完成处理和集群,即使等待一个小时后也只是继续旋转......
  • 我认为安装的漫长等待时间与在每个工作节点上安装库有关,但即使在两个工作节点的集群上它也从未完成并运行后一个代码(仅安装在驱动程序上)导致初始化脚本失败 - 没有关于失败的详细信息 - 事件日志只是提到它失败了。
  • 你可以启用集群日志到DBFS,然后它也会包含init脚本的日志,你可以通过databrics fs ...将它拉到本地机器

标签: r databricks gdal geos aws-databricks


【解决方案1】:

我遇到了类似的情况,需要安装一些 R 包在 unix 环境中工作所需的库。在 Databricks 上执行一些类似于下面的命令以在 DBFS 中创建 initscript,希望对您的问题有所帮助。
此外,它们应该安装在所有节点上,而不仅仅是驱动程序节点,如果您希望使用分布式计算,R 包也可以在工作节点上工作。

dbutils.fs.mkdirs("dbfs:/databricks/initscripts/") 

dbutils.fs.put("/databricks/initscripts/installpackagehelpers.sh","""
#!/bin/bash
echo "Installing libgmp"
sudo apt-get -q -y --fix-missing install libgmp-dev
echo "Installed libgmp" 
echo "Installing libmpfr"
sudo apt-get -q -y --fix-missing install libmpfr-dev
echo "Installed libmpfr"
""", True)

最后,在创建集群时提供了来自 DBFS 的 initscript 位置。 /databricks/initscripts/installpackagehelpers.sh 按照上面的例子

【讨论】:

    猜你喜欢
    • 2020-03-03
    • 1970-01-01
    • 2021-12-21
    • 1970-01-01
    • 1970-01-01
    • 2012-01-10
    • 2022-01-09
    • 2016-02-13
    • 1970-01-01
    相关资源
    最近更新 更多