在Databricks安装R版h2o遇jsonlite依赖错误的排查方法
Databricks上安装R版h2o的错误排查方案
问题场景
在Databricks上安装R版本h2o时,先执行以下shell命令:
apt-get install libcurl4-openssl-dev -y apt-get update -y apt-get install -y r-cran-jsonlite
所有命令运行正常,但执行R安装命令:
install.packages("h2o", type="source", repos=(c("http://h2o-release.s3.amazonaws.com/h2o/latest_stable_R")))
收到如下错误:
Warning message:
This project is configured to use R version '4.0.4', but '4.2.2' is currently being used.
ERROR: dependency ‘jsonlite’ is not available for package ‘h2o’
- removing ‘/local_disk0/.ephemeral_nfs/envs/rEnv-2a5edebe-8ede-4459-8a8b-72c0047b8a01/h2o’
Installing package into ‘/local_disk0/.ephemeral_nfs/envs/rEnv-2a5edebe-8ede-4459-8a8b-72c0047b8a01’
(as ‘lib’ is unspecified)
trying URL 'http://h2o-release.s3.amazonaws.com/h2o/latest_stable_R/src/contrib/h2o_3.40.0.4.tar.gz'
Content type 'application/x-tar' length 177590345 bytes (169.4 MB)
==================================================
downloaded 169.4 MBWarning in utils::install.packages(pkgs, ...) :
installation of package ‘h2o’ had non-zero exit statusThe downloaded source packages are in
‘/tmp/RtmpXqq9V0/downloaded_packages’
排查步骤
1. 统一R版本配置
错误提示项目配置的R版本(4.0.4)与当前运行版本(4.2.2)不一致,这是核心诱因之一:
- 进入Databricks集群配置页面,将R版本设置调整为当前运行的4.2.2,或者切换到适配R 4.0.4的集群环境
- 重启集群,确保版本配置生效
2. 在R环境内安装jsonlite依赖
通过apt-get安装的是系统级的jsonlite,但R的独立环境(/local_disk0/.ephemeral_nfs/envs/rEnv-xxx)无法识别,需在R会话内直接安装:
install.packages("jsonlite", repos="https://cloud.r-project.org/")
安装完成后重新尝试安装h2o
3. 匹配h2o与R的兼容版本
当前安装的h2o 3.40.0.4可能与R 4.2.2存在兼容性问题,可尝试两种方式:
- 确认h2o官方提供的适配R 4.2.2的稳定版,替换安装命令中的repo地址
- 使用h2o的GitHub源码安装,自动适配当前R版本:
library(devtools) install_github("h2oai/h2o-3/h2o-r/h2o-package")
4. 指定安装路径确保权限与环境一致性
明确指定R环境的安装路径,确保依赖包和h2o安装在同一目录,同时验证路径权限:
# 先安装jsonlite到指定环境 install.packages("jsonlite", lib="/local_disk0/.ephemeral_nfs/envs/rEnv-2a5edebe-8ede-4459-8a8b-72c0047b8a01") # 再安装h2o到同一环境 install.packages("h2o", type="source", repos=(c("http://h2o-release.s3.amazonaws.com/h2o/latest_stable_R")), lib="/local_disk0/.ephemeral_nfs/envs/rEnv-2a5edebe-8ede-4459-8a8b-72c0047b8a01")
内容的提问来源于stack exchange,提问作者user1700890
相关产品推荐
相关产品推荐

