相关疑难解决方法(0)

Apache Spark 3.3.0 在 Java 17 上中断并显示“无法访问类 sun.nio.ch.DirectBuffer”

在Running unit test with Spark 3.3.0 on Java 17 failed with IllegalAccessError: class StorageUtils cannot access class sun.nio.ch.DirectBuffer 中提出了类似的问题,但该问题(和解决方案)仅与单元测试有关。对我来说 Spark 正在破坏程序的实际运行。

根据Spark 概述,Spark 可与 Java 17 配合使用。我在 Windows 10 上使用 Temurin-17.0.4+8 (build 17.0.4+8),包括 Maven 中的 Spark 3.3.0,如下所示:

<scala.version>2.13</scala.version>
<spark.version>3.3.0</spark.version>
...
<dependency>
  <groupId>org.apache.spark</groupId>
  <artifactId>spark-core_${scala.version}</artifactId>
  <version>${spark.version}</version>
</dependency>

<dependency>
  <groupId>org.apache.spark</groupId>
  <artifactId>spark-sql_${scala.version}</artifactId>
  <version>${spark.version}</version>
</dependency>
Run Code Online (Sandbox Code Playgroud)

我尝试运行一个简单的程序:

final SparkSession spark = SparkSession.builder().appName("Foo Bar").master("local").getOrCreate();
final Dataset<Row> df = spark.read().format("csv").option("header", "false").load("/path/to/file.csv");
df.show(5);
Run Code Online (Sandbox Code Playgroud)

这到处都是:

Caused by: java.lang.IllegalAccessError: class org.apache.spark.storage.StorageUtils$ (in unnamed module @0x59d016c9) cannot access class …
Run Code Online (Sandbox Code Playgroud)

java apache-spark java-17

52
推荐指数
3
解决办法
4万
查看次数

Spark 的 Java 17 解决方案 - java.lang.NoClassDefFoundError:无法初始化类 org.apache.spark.storage.StorageUtils

这里有一些解决方案

Windows Spark 错误 java.lang.NoClassDefFoundError:无法初始化类 org.apache.spark.storage.StorageUtils

上述错误可能对应于以下异常:

java.lang.IllegalAccessError: class org.apache.spark.storage.StorageUtils$ (in unnamed module @0x12a94400) cannot access class sun.nio.ch.DirectBuffer (in module java.base) because module java.base does not export sun.nio.ch to unnamed module
Run Code Online (Sandbox Code Playgroud)

切换回 Java 11 或更低版本对我来说不是一个解决方案。Java 17 如何解决这个问题?

java apache-spark java-17

14
推荐指数
1
解决办法
8275
查看次数

标签 统计

apache-spark ×2

java ×2

java-17 ×2