Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/apache-spark/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sparkyr-JAVA_HOME已设置,但未指向有效版本。_R_Apache Spark_Sparklyr - Fatal编程技术网

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

Sparkyr-JAVA_HOME已设置,但未指向有效版本。,r,apache-spark,sparklyr,R,Apache Spark,Sparklyr,我正试图使用sparkyr分析R中的一个大型数据集。当我试图与Spark\u 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.jav

我正试图使用
sparkyr
分析R中的一个大型数据集。当我试图与
Spark\u 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,但仍然出现同样的错误。有什么建议吗?

在终端中运行
echo$JAVA\u HOME
,查看输出结果

在我的Mac OS中,输出为:
/Library/Java/JavaVirtualMachines/jdk1.8.0\u 77.jdk/Contents/Home
运行时:

sparklyr:::get_java()
           java 
"/usr/bin/java" 
您的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(未升级,因为每个苹果的硬件都“过时”)和R3.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>
从@user6910411的评论中,我得到提醒,您不应该更新到当前的Java开发工具包(1.9),而应该使用@Kerie提供的链接到先前的主要版本1.8。您还应该运行:

Sys.unsetenv("JAVA_HOME") 

以消除误导性的符号链接。或者您可以在
/Library/Java/Home
(如果它在那里)找到它,并在安装新的(但不是最新的)版本之前将其删除。

运行
$Java-version
时,我的输出看起来与您的相同。类似地,当我运行
sparklyr:::get_java()
时,输出读取
/usr/bin/java
。你知道我的Java的设置可能会有什么不同吗?
sparklyr
很可能期望找到一个环境变量(尽管能够在PATH变量中找到java组件。当您在一个配置文件文件中设置一个组件时会发生什么情况?有关选项的完整列表,请参阅:
?Startup
。我建议不要使用bash.profile。环境有时会有所不同。
Sys.which(“java”)
(从R控制台)中)return?java“C:\\PROGRA~2\\COMMON~1\\Oracle\\java\\javapath\\java.exe”@Kyle你是怎么安装java的?那是JDK还是JRE?试着从下载JDK。选择
JDK-8u181-macosx-x64.dmg
,大约242.83 MB。@Kyle。我在
/Library/java/Home
还有一个符号链接,日期是2009年,指向一个无效的位置。我认为这是早期安装的残余。我现在有这个符号k位于
/usr/bin/java
指向
jdk1.8.0131.jdk
中的代码。我想您可能需要更新java的安装。
Sys.unsetenv("JAVA_HOME")