如何在Jupyter笔记本中使用conda环境中的特定Java版本
我的总体目标是在我的Jupyter实验室Azure云服务上的R Jupyter笔记本中使用如何在Jupyter笔记本中使用conda环境中的特定Java版本,java,r,azure,jupyter-notebook,anaconda,Java,R,Azure,Jupyter Notebook,Anaconda,我的总体目标是在我的Jupyter实验室Azure云服务上的R Jupyter笔记本中使用SparkyR。我使用R、SparkyR和Java 8(因为这是SparkyR支持的版本)创建了一个新的conda环境,如下所示: 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,
SparkyR
。我使用R、SparkyR和Java 8(因为这是SparkyR支持的版本)创建了一个新的conda环境,如下所示:
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
>系统(“java版本”)
openjdk版本“1.8.0_152-release”
OpenJDK运行时环境(build 1.8.0_152-release-1056-b12)
OpenJDK 64位服务器虚拟机(构建25.152-b12,混合模式)
>图书馆(年)
>sc火花塞断开装置(sc)
无效的
>
但是,当我在笔记本电脑中使用相同的“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: [...]
库(年)
sc@merv的评论让我走上了正确的道路:
使用环境中终端的R控制台中的Sys.getenv(“JAVA\u HOME”)
获取当前的JAVA\u HOME
-路径:“/path/to/your/JAVA”
在具有相应环境内核的笔记本中,使用Sys.setenv(JAVA_HOME=“/path/to/your/JAVA”)并开始 我对笔记本电脑的经验有限,对R一无所知,甚至从未听说过SparkyR,所以我所说的一切都要谨慎,但是:你们从哪里推出Jupyter?我猜Jupyter要在您的环境中找到openjdk,您必须从该环境启动Jupyter,但是您的
conda create
命令表明您是从其他地方启动它。实际上,Jupyter笔记本是从Azure云上名为“Jupyter实验室”的专用服务启动的。由于我在这个jupyter web浏览器gui中创建了conda envs,我想这是问题的一部分……在笔记本中,Sys.getenv(“JAVA_HOME”)
是否正确地指向了env中的JAVA?是否有任何允许设置Java路径的sparklyr
配置选项?