【问题标题】:R is not detecting the latest Java version (1.8) installed when using sparklyr package使用 sparklyr 包时,R 未检测到安装的最新 Java 版本(1.8)
【发布时间】:2017-08-27 00:54:04
【问题描述】:

R 未检测到为使用 sparklyr 包而安装的最新 Java 版本 (1.8)。

config <- spark_config()
config$sparklyr.gateway.port = 10000
config$sparklyr.gateway.connect.timeout = 1  
config$sparklyr.gateway.start.wait = 1000
library(sparklyr)
library(dplyr) 
library(DBI)
sc <- spark_connect(master="yarn-client", method = c("shell"),config=config, app_name = "sparklyr",version="2.0.0", extensions = sparklyr::registered_extensions())

Error in validate_java_version(spark_home) : 
Java version1.6.0.65 detected but 1.7+ is required. Please download and 
install Java from https://www.java.com/en/

我更新了 Java 版本并在 Mac 终端中确认。然后我重新启动了 Rsession:

/Library/Internet\ Plug-Ins/JavaAppletPlugin.plugin/Contents/Home/bin/java -
version 
java version "1.8.0_121"
Java(TM) SE Runtime Environment (build 1.8.0_121-b13)
Java HotSpot(TM) 64-Bit Server VM (build 25.121-b13, mixed mode)

但我仍然收到同样的错误,Java 版本过时:

Error in validate_java_version(spark_home) : 
Java version1.6.0.65 detected but 1.7+ is required. Please download and 
install Java from https://www.java.com/en/

知道如何解决这个问题吗?

【问题讨论】:

    标签: r sparklyr


    【解决方案1】:

    目前(2019 年开始,版本 0.9.4)sparklyr 需要 java v1.7-1.8,macOSX 上安装的默认版本通常为 1.6。

    您可以使用

    在终端中检查您的版本
    java -version
    

    如果你得到类似的东西

    java version "1.6.0_65"
    Java(TM) SE Runtime Environment (build 1.6.0_65-b14-468-11M4833)
    Java HotSpot(TM) 64-Bit Server VM (build 20.65-b04-468, mixed mode)
    

    你需要更新它。如果您安装了brew,只需执行以下操作:

    brew tap caskroom/versions
    brew cask install java8
    

    完成此操作后,您可以使用

    检查本地计算机上的安装
    ls -1 /Library/Java/JavaVirtualMachines/
    

    通常,重新启动 R 会话后,sparklyr 应该会识别正确的版本 (1.8)。 如果情况不是,您可以在R 中设置JAVA_HOME 环境变量:

    Sys.setenv(JAVA_HOME = "/Library/Java/JavaVirtualMachines/jdk1.8.0_172.jdk/Contents/Home")
    

    local 模式下使用RStudio recommended guidelines for connecting 时,这对我有用。

    我有另一个 java 版本,我该怎么办?

    在调用brew cask install 时输入java8 很重要,否则将安装最新版本的java。我犯了这个错误并安装了openjdk version "11.0.2" 2019-01-15

    如果您有类似情况,请brew cask remove java 卸载 java 并获取所需的正确版本。

    此信息来自issue on the sparklyr GitHub Repo 和另一个stackOverflow question

    【讨论】:

    • 由于 Oracle 的许可要求最近发生了变化,因此需要更新 brew 命令。我推荐$ brew cask install homebrew/cask-versions/adoptopenjdk8。然后,来自 R:Sys.setenv(JAVA_HOME = "/Library/Java/JavaVirtualMachines/adoptopenjdk-8.jdk/Contents/Home").
    【解决方案2】:

    我可以通过从以下网站安装最新的 JAVA 版本来解决此问题:

    http://www.oracle.com/technetwork/java/javase/downloads/index.html

    您可以通过在mac终端上运行以下命令进一步检查版本是否更新成功:

    java -version
    

    现在我可以使用 sparklyr 包了。

    【讨论】:

      猜你喜欢
      • 2021-12-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-08
      • 2019-12-16
      相关资源
      最近更新 更多