sparklyr- JAVA_HOME已设置,但未指向有效版本。

时间:2018-10-16 03:44:04

标签: r apache-spark sparklyr

我正在尝试使用sparklyr分析R中的一个大型数据集。尝试与spark_connect建立Spark连接时,出现以下错误:

Error in get_java(throws = TRUE) : 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: https://www.java.com/en/

我已经重新安装了Java,但继续收到相同的错误。有什么建议吗?

2 个答案:

答案 0 :(得分:2)

当我跑步时:

sparklyr:::get_java()
           java 
"/usr/bin/java" 

似乎您没有以sparklyr函数的响应令人满意的方式来设置Java。与@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的评论中,提醒我不要更新到当前的Java Dev Kit(1.9),而应使用@Kerie提供的到以前的主要版本1.8的链接。您还应该运行:

Sys.unsetenv("JAVA_HOME") 

摆脱具有误导性的符号链接。或者,您可以在/Library/Java/Home(如果它位于此处)进行跟踪,并在安装较新(但不是最新)的版本之前将其删除。

答案 1 :(得分:0)

在终端中运行Settings.Global.getString(getContentResolver(), "device_name"); ,然后查看输出是什么。

在我的Mac OS中,输出为: echo $JAVA_HOME