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
添加回答
舉報