Apache Spark 3.3.0 не работает на Java 17 из-за «невозможно получить доступ к классу sun.nio.ch.DirectBuffer»JAVA

Программисты JAVA общаются здесь
Ответить Пред. темаСлед. тема
Anonymous
 Apache Spark 3.3.0 не работает на Java 17 из-за «невозможно получить доступ к классу sun.nio.ch.DirectBuffer»

Сообщение Anonymous »

Похожий вопрос был задан при выполнении модульных тестов с помощью Spark 3.3.0 на Java 17 с ошибкой IllegalAccessError: класс StorageUtils не может получить доступ к классу sun.nio.ch.DirectBuffer, но этот вопрос (и решение) касался только модульных тестов. Для меня Spark нарушает работу программы.
Согласно обзору Spark, Spark работает с Java 17. Я использую Temurin-17.0.4+8 (сборка 17.0.4+) 8) в Windows 10, включая Spark 3.3.0 в Maven, вот так:

Код: Выделить всё

2.13
3.3.0
...

org.apache.spark
spark-core_${scala.version}
${spark.version}



org.apache.spark
spark-sql_${scala.version}
${spark.version}

Я пытаюсь запустить простую программу:

Код: Выделить всё

final SparkSession spark = SparkSession.builder().appName("Foo Bar").master("local").getOrCreate();
final Dataset df = spark.read().format("csv").option("header", "false").load("/path/to/file.csv");
df.show(5);
Это ломается повсюду:

Код: Выделить всё

Caused by: java.lang.IllegalAccessError: class org.apache.spark.storage.StorageUtils$ (in unnamed module @0x59d016c9) cannot access class sun.nio.ch.DirectBuffer (in module java.base) because module java.base does not export sun.nio.ch to unnamed module @0x59d016c9
at org.apache.spark.storage.StorageUtils$.(StorageUtils.scala:213)
at org.apache.spark.storage.BlockManagerMasterEndpoint.(BlockManagerMasterEndpoint.scala:114)
at org.apache.spark.SparkEnv$.$anonfun$create$9(SparkEnv.scala:353)
at org.apache.spark.SparkEnv$.registerOrLookupEndpoint$1(SparkEnv.scala:290)
at org.apache.spark.SparkEnv$.create(SparkEnv.scala:339)
at org.apache.spark.SparkEnv$.createDriverEnv(SparkEnv.scala:194)
at org.apache.spark.SparkContext.createSparkEnv(SparkContext.scala:279)
at org.apache.spark.SparkContext.(SparkContext.scala:464)
at org.apache.spark.SparkContext$.getOrCreate(SparkContext.scala:2704)
at org.apache.spark.sql.SparkSession$Builder.$anonfun$getOrCreate$2(SparkSession.scala:953)
at scala.Option.getOrElse(Option.scala:201)
at org.apache.spark.sql.SparkSession$Builder.getOrCreate(SparkSession.scala:947)
Очевидно, что Spark делает то, чего не следует делать в Java 17.
Разочаровывает. Как мне это обойти?

Подробнее здесь: https://stackoverflow.com/questions/734 ... -ch-direct
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «JAVA»