【问题标题】:Installing Remote R Package to Databricks Cluster Rather than Notebook将远程 R 包安装到 Databricks 集群而不是笔记本
【发布时间】:2021-12-21 07:51:39
【问题描述】:

我正在尝试将 prophet 包安装到 Databricks。我想将它直接安装到我的集群而不是我的笔记本上。以下是将其安装到笔记本的代码:

Sys.setenv(DOWNLOAD_STATIC_LIBV8 = 1)
remotes::install_github("jeroen/V8")
devtools::install_version("rstantools", version = "2.0.0")
install.packages('prophet')

但是,我想将它直接下载到我的集群中。我将如何添加此 sn-p 代码以将先知包安装到我的 Databricks 集群?

以下是我在尝试将软件包安装到集群时看到的选项:

尝试直接下载到集群:

命令 1

%python
dbutils.fs.mkdirs("dbfs:/databricks/scripts/")

命令 2

%python
dbutils.fs.put("/databricks/scripts/prophet_install_script.R","""
Sys.setenv(DOWNLOAD_STATIC_LIBV8 = 1)
remotes::install_github(\"jeroen/V8\")
devtools::install_version(\"rstantools\", version = \"2.0.0\")
install.packages('prophet')
""", True)

命令 3

%python
dbutils.fs.put("/databricks/scripts/stock_cluster_init_script_v1.sh","""
#!/bin/bash
R CMD BATCH /dbfs/databricks/scripts/prophet_install_script.R
""", True)

然后我进入我的新集群并使用这个初始化脚本运行它:

然后它向我提供了以下错误:

{
  "reason": {
    "code": "INIT_SCRIPT_FAILURE",
    "type": "CLIENT_ERROR",
    "parameters": {
      "instance_id": "i-0c71b23287fb81530",
      "databricks_error_message": "Cluster scoped init script dbfs:/databricks/scripts/stock_cluster_init_script_v1.sh failed: Script exit status is non-zero"
    }
  }
}

【问题讨论】:

    标签: r databricks facebook-prophet


    【解决方案1】:

    如果您不是社区版,那么您可以使用cluster init script 执行此安装(您也可以在那里安装其他库)。

    只需将 R 命令放入 DBFS 上的文件中(请参阅链接文档以了解如何使用 dbutils.fs.put - 您还需要显式设置 CRAN 镜像):

    local({r <- getOption("repos")
           r["CRAN"] <- "http://cran.r-project.org" 
           options(repos=r)
    })
    Sys.setenv(DOWNLOAD_STATIC_LIBV8 = 1)
    remotes::install_github(\"jeroen/V8\")
    devtools::install_version(\"rstantools\", version = \"2.0.0\")
    install.packages('prophet')
    

    然后创建具有以下内容的初始化脚本:

    #!/bin/bash
    
    Rscript --verbose  /dbfs/<path-to-file>
    

    请注意&lt;path-to-file&gt; 应该没有dbfs:

    【讨论】:

    • 谢谢!我应该将 R 命令作为 R 文件保存到记事本/直接上传到 Databricks,然后在新文件路径上调用 dbutils.fs.put 函数 - #!/bin/bash R CMD BATCH /dbfs/&lt;path-to-file&gt;
    • 您也可以将dbutils.fs.put 用于 R 命令。或者您可以使用编辑器创建初始化脚本 - 最终效果相同
    • 我在原始问题中提供了我的尝试,但它未能运行。知道我可能做错了什么吗?感谢帮助
    • 使用/databricks/scripts/prophet_install_script.r 代替/databricks/scripts/prophet_install_script//databricks/scripts/stock_cluster_init_script.sh 代替/databricks/scripts/stock_cluster_init_script/
    • 成功了,谢谢!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-02-07
    • 2021-03-13
    • 1970-01-01
    • 2022-07-13
    • 2016-10-30
    • 2022-10-09
    相关资源
    最近更新 更多