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

问题描述 投票:0回答:3

我正在尝试使用

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,但仍然出现同样的错误。有什么建议吗?

java r apache-spark sparklyr
3个回答
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
(如果它在那里)找到它并在安装较新(但不是最新)版本之前将其删除。


0
投票

在终端运行

echo $JAVA_HOME
,看看输出是什么。

在我的 Mac OS 中,输出是:

/Library/Java/JavaVirtualMachines/jdk1.8.0_77.jdk/Contents/Home


0
投票

出现这种情况是因为您在评论中提到的Java路径放在

%JAVA_HOME%\bin
之前或直接添加到Path中或者您的Windows机器中没有
%JAVA_HOME%\bin
变量。

以下步骤应该可以解决您的 Java 路径问题。

进入系统变量。

如果您还没有添加

JAVA_HOME
,请在系统变量部分添加它。就像下面的例子。

选择路径变量为系统变量点击编辑

应该有像

C:\PROGRA~2\COMMON~1\Oracle\Java\javapath\java.ex
e这样的Java路径 在路径中。删除它。 单击
New
并添加
%JAVA_HOME%\bin
现在应该设置正确的 Java 路径。 打开一个新的命令提示符并键入
java -version
应该被解决。 (已经打开的命令提示符不会在 Windows 中反映出来)

请注意,有时这不会影响像 IntelliJ 这样的 IDE,因为它们具有先进的缓存系统。您必须清除这些缓存。否则,即使在 OS 中已经更改,也不会显示为 Java 已更改。

© www.soinside.com 2019 - 2024. All rights reserved.