r-如何在Jupyter笔记本电脑内部的conda环境中使用特定的Java版本



我的总体目标是在Jupyter实验室的Azure云服务上的R Jupyter笔记本中使用sparklyr

conda create -n r_spark r=3.6 r-essentials r-irkernel openjdk=8 r-sparklyr
source activate r_spark
R
> IRkernel::installspec(user=TRUE, name="rspark", displayname="R (Spark)") 

当我在这个环境中的终端会话中运行R时,一切都很好:

R
> system("java -version")
openjdk version "1.8.0_152-release"
OpenJDK Runtime Environment (build 1.8.0_152-release-1056-b12)
OpenJDK 64-Bit Server VM (build 25.152-b12, mixed mode)
> library(sparklyr)
> sc <- spark_connect(master="local")
* Using Spark: 2.3.3
Registered S3 method overwritten by 'openssl':
method      from
print.bytes Rcpp
> spark_disconnect(sc)
NULL
>

然而,当我在具有相同"R(Spark("内核的笔记本中执行相同的操作时,它使用Java openjdk版本11:

library(sparklyr)
sc <- spark_connect(master="local")
Error in validate_java_version_line(master, version): Java version detected
but couldnt parse version from: openjdk version "11.0.4" 2019-07-16
Traceback: [...]

此外,system("java -version", intern=TRUE)从笔记本中返回一个空结果。

如何告诉笔记本电脑从其环境中使用Java版本?

@merv的评论让我走上了正轨:

在环境中的终端的R控制台中获取当前JAVA_HOME-与Sys.getenv("JAVA_HOME")的路径:"/path/to/your/java"

在具有相应环境内核的笔记本电脑中,使用Sys.setenv(JAVA_HOME="/path/to/your/java")并执行!

最新更新