【问题标题】:Trying to open spark after installation and getting an error: Unable to find any JVMs matching version "1.8"安装后尝试打开 spark 报错:找不到任何与版本“1.8”匹配的 JVM
【发布时间】:2020-04-07 23:26:05
【问题描述】:

说明:

我使用 Homebrew 在我的 MacBook 上安装了 spark。我遵循了来自:https://www.tutorialkart.com/apache-spark/how-to-install-spark-on-mac-os/ 的指令过程。

分步过程包括安装 Java,然后是 Scala,然后是 Spark。 Java 和 Scala 安装成功。 Spark 也安装成功。

当我尝试使用以下输入命令验证 spark 安装时,我遇到了错误。

输入指令: spark-shell

预期行为:预期 Spark 在终端上启动

实际行为:我收到以下错误:

Unable to find any JVMs matching version "1.8".
WARNING: An illegal reflective access operation has occurred
WARNING: Illegal reflective access by org.apache.spark.unsafe.Platform (file:/usr/local/Cellar/apache-spark/2.4.5/libexec/jars/spark-unsafe_2.11-2.4.5.jar) to method java.nio.Bits.unaligned()
WARNING: Please consider reporting this to the maintainers of org.apache.spark.unsafe.Platform
WARNING: Use --illegal-access=warn to enable warnings of further illegal reflective access operations
WARNING: All illegal access operations will be denied in a future release
Exception in thread "main" java.lang.ExceptionInInitializerError
    at org.apache.hadoop.util.StringUtils.<clinit>(StringUtils.java:80)
    at org.apache.hadoop.security.SecurityUtil.getAuthenticationMethod(SecurityUtil.java:611)
    at org.apache.hadoop.security.UserGroupInformation.initialize(UserGroupInformation.java:273)
    at org.apache.hadoop.security.UserGroupInformation.ensureInitialized(UserGroupInformation.java:261)
    at org.apache.hadoop.security.UserGroupInformation.loginUserFromSubject(UserGroupInformation.java:791)
    at org.apache.hadoop.security.UserGroupInformation.getLoginUser(UserGroupInformation.java:761)
    at org.apache.hadoop.security.UserGroupInformation.getCurrentUser(UserGroupInformation.java:634)
    at org.apache.spark.util.Utils$$anonfun$getCurrentUserName$1.apply(Utils.scala:2422)
    at org.apache.spark.util.Utils$$anonfun$getCurrentUserName$1.apply(Utils.scala:2422)
    at scala.Option.getOrElse(Option.scala:121)
    at org.apache.spark.util.Utils$.getCurrentUserName(Utils.scala:2422)
    at org.apache.spark.SecurityManager.<init>(SecurityManager.scala:79)
    at org.apache.spark.deploy.SparkSubmit.secMgr$lzycompute$1(SparkSubmit.scala:348)
    at org.apache.spark.deploy.SparkSubmit.org$apache$spark$deploy$SparkSubmit$$secMgr$1(SparkSubmit.scala:348)
    at org.apache.spark.deploy.SparkSubmit$$anonfun$prepareSubmitEnvironment$7.apply(SparkSubmit.scala:356)
    at org.apache.spark.deploy.SparkSubmit$$anonfun$prepareSubmitEnvironment$7.apply(SparkSubmit.scala:356)
    at scala.Option.map(Option.scala:146)
    at org.apache.spark.deploy.SparkSubmit.prepareSubmitEnvironment(SparkSubmit.scala:355)
    at org.apache.spark.deploy.SparkSubmit.org$apache$spark$deploy$SparkSubmit$$runMain(SparkSubmit.scala:774)
    at org.apache.spark.deploy.SparkSubmit.doRunMain$1(SparkSubmit.scala:161)
    at org.apache.spark.deploy.SparkSubmit.submit(SparkSubmit.scala:184)
    at org.apache.spark.deploy.SparkSubmit.doSubmit(SparkSubmit.scala:86)
    at org.apache.spark.deploy.SparkSubmit$$anon$2.doSubmit(SparkSubmit.scala:920)
    at org.apache.spark.deploy.SparkSubmit$.main(SparkSubmit.scala:929)
    at org.apache.spark.deploy.SparkSubmit.main(SparkSubmit.scala)
Caused by: java.lang.StringIndexOutOfBoundsException: begin 0, end 3, length 2
    at java.base/java.lang.String.checkBoundsBeginEnd(String.java:3756)
    at java.base/java.lang.String.substring(String.java:1902)
    at org.apache.hadoop.util.Shell.<clinit>(Shell.java:52)

我尝试了什么:

我尝试使用以下命令更改 JAVA_HOME:

export JAVA_HOME=/usr/local/opt/java

以前的 JAVA_HOME 路径是 /opt/anaconda3。我可以看到 JAVA_HOME 已更改为 usr/local/opt/java

我仍然收到错误消息。感谢您的回答/反馈。谢谢!!!

【问题讨论】:

  • 您是否安装了较新版本的 Java? /usr/local/opt/java/bin/java -version 的结果是什么?
  • 是的,作为 spark 安装的一部分,我确实安装了更新版本的 Java。奇怪.../usr/local/opt/java/bin/java -version 给了我这个:openjdk 版本“13.0.2”2020-01-14 OpenJDK 运行时环境(构建 13.0.2+8)OpenJDK 64 位服务器 VM(构建 13.0.2+8,混合模式) ,分享)。当我从默认提示中输入java -version 时,我得到了这个: openjdk version "1.8.0_152-release" OpenJDK Runtime Environment (build 1.8.0_152-release-1056-b12) OpenJDK 64-Bit Server VM (build 25.152 -b12,混合模式)
  • 好的。现在试试which java
  • 当我尝试 'which which java 我得到这个:/Users/skanda_work/opt/anaconda3/bin/java
  • export JAVA_HOME=/Users/skanda_work/opt/anaconda3

标签: java macos scala apache-spark homebrew-cask


【解决方案1】:

对于 macOS,请按照以下步骤操作 步骤 1. 安装 java 8,因为 Spark 2.2 及更高版本需要 java8。见Spark Documentation!了解详情。

brew install openjdk@8

然后设置更新java路径

export JAVA_HOME=/usr/local/opt/openjdk@8/libexec/openjdk.jdk/Contents/Home

【讨论】:

    【解决方案2】:

    我在网上搜索并看到了安装 pyspark 的说明。

    我在终端上运行了这个命令pip install pyspark

    安装 pyspark 后,spark 和 pyspark 都在运行。

    不知道发生了什么,但我现在可以运行 spark 了。

    感谢@Elliott 互动并提供指导!

    【讨论】:

    • 同意,pip install 在 MacBook Pro 上工作于 conda installbinaries
    猜你喜欢
    • 2020-08-14
    • 1970-01-01
    • 2019-08-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-05-26
    • 2016-04-21
    • 1970-01-01
    相关资源
    最近更新 更多