当我跑步时:
sparklyr:::get_java()
java
"/usr/bin/java"
您似乎没有以这样一种方式设置java,以使sparklyr 函数的响应令人满意。与@Kerie 不同,我从 echo 命令中一无所获。相反,我可以在终端会话中从此命令中获得合理的结果:
$ java -version
#-------------------
java version "1.8.0_131"
Java(TM) SE Runtime Environment (build 1.8.0_131-b11)
Java HotSpot(TM) 64-Bit Server VM (build 25.131-b11, mixed mode)
运行 MacOS 10.11.6(未升级,因为我的硬件在 Apple 看来是“过时的”)和 R 3.5.1。
这里具有讽刺意味的是,如果 get_java 函数找不到环境变量,它似乎应该为该位置设置一个值。代码如下:
sparklyr:::get_java
#----------
function (throws = FALSE)
{
java_home <- Sys.getenv("JAVA_HOME", unset = NA)
if (!is.na(java_home)) {
java <- file.path(java_home, "bin", "java")
if (identical(.Platform$OS.type, "windows")) {
java <- paste0(java, ".exe")
}
if (!file.exists(java)) {
if (throws) {
stop("Java is required to connect to Spark. ",
"JAVA_HOME is set but does not point to a valid version. ",
"Please fix JAVA_HOME or reinstall from: ",
java_install_url())
}
java <- ""
}
}
else java <- Sys.which("java")
java
}
<bytecode: 0x7fb5c7f2db30>
<environment: namespace:sparklyr>
因为我没有 JAVA_HOME 的环境变量,但有java 注册到which,所以get_java 函数返回一个有效路径。所以我的系统返回:
Sys.which("java")
java
"/usr/bin/java"
@user6910411 的 cmets 提醒我,您不应更新到当前的 Java Dev Kit(即 1.9),而应使用 @Kerie 提供的链接到之前的主要版本 1.8。您还应该运行:
Sys.unsetenv("JAVA_HOME")
摆脱误导性的符号链接。或者您可以在/Library/Java/Home(如果它在哪里)找到它并在安装更新(但不是最新)版本之前将其删除。