3 回答
TA贡献1824条经验 获得超6个赞
从 spark-core 依赖项中排除默认的 XBean 工件并添加最新版本的 XBean 工件,它对我有用。
<dependencies>
<dependency>
<groupId>org.apache.xbean</groupId>
<artifactId>xbean-asm6-shaded</artifactId>
<version>4.10</version>
</dependency>
<dependency>
<groupId>org.apache.spark</groupId>
<artifactId>spark-core_2.11</artifactId>
<version>2.4.1</version>
<exclusions>
<exclusion>
<groupId>org.apache.xbean</groupId>
<artifactId>xbean-asm6-shaded</artifactId>
</exclusion>
</exclusions>
</dependency>
</dependencies>
TA贡献1825条经验 获得超6个赞
问题的根本原因是我瞄准了错误的 JDK 的符号链接,这就是它不起作用的原因。JAVA_HOME 的目标是 jdk11 并且 eclipse 正在运行它。
TA贡献1886条经验 获得超2个赞
由于大多数python开发人员为该项目生成了virutalenv,因此您可以使用以下代码段来检查pyspark工作所需的不同组件的版本。错误的原因是java版本不兼容。pyspark期望java version 1.8+而不是jdk-11。Major version 55对应于jdk-11您在此处看到的
仅检查官方 spark 文档以了解版本兼容性。
import subprocess
# subprocess to find the java , scala and python version
cmd1 = "java -version"
cmd2 = "scala -version"
cmd3 = "python --version"
cmd4 = "whoami"
arr = [cmd1, cmd2, cmd3, cmd4]
for cmd in arr:
process = subprocess.Popen(cmd.split(" "), stdout=subprocess.PIPE,stderr=subprocess.PIPE )
stdout,stderr=process.communicate()
logging.info(stdout.decode("utf-8") + " | " + stderr.decode("utf-8"))
logging.info(os.getenv("JAVA_HOME"))
logging.info(os.getenv("HOME"))
您将获得以下输出:
INFO:root: | openjdk version "1.8.0_252"
OpenJDK Runtime Environment (build 1.8.0_252-8u252-b09-1~18.04-b09)
OpenJDK 64-Bit Server VM (build 25.252-b09, mixed mode)
INFO:root: | Scala code runner version 2.12.2 -- Copyright 2002-2017, LAMP/EPFL and Lightbend, Inc.
INFO:root:Python 3.6.9
INFO:root:training
添加回答
举报