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")