반응형
Apache Spark 를 JDK 17 에서 사용하면
cannot access class sun.nio.ch.DirectBuffer 관련 오류를 볼수가 있다.
JDK 의 보안 업데이트로 인해 기본적으로 외부모듈에서의 DirectBuffer 접근이 막혀있기 때문이다.
jvm 실행시 열어주는 것 외에는 코드로 처리할 방법은 없다.
설치작업시 이런 설정 하나하나 추가하는게 매우 번거로워, 해결방법을 찾아봤으나 아예 없으니 수고하실 필요 없겠다.
java -Dfile.encoding=UTF-8 -Xms1024m -Xmx2048m \
--add-opens=java.base/sun.nio.ch=ALL-UNNAMED \
-jar test.jar \
이와 같이 --add-open=java.base/sun.nio.ch=ALL-UNNAMED 설정을 추가하면 된다.
chatGPT 에게 물어보아도 이런식으로 알려준다. 전부 테스트 해보고 검증한것이니, GPT보다 저를 믿으시길..
번 외로, java 에서 spark application 을 submit 하는 경우 실제로는 별도로 jvm 이 실행되는 형태인데, Spark 설정에 아래 옵션을 넣어주면 된다.
Spark 설정은 spark_home/conf/spark-defaults.conf
spark.driver.extraJavaOptions --add-opens=java.base/sun.nio.ch=ALL-UNNAMED
spark.executor.extraJavaOptions --add-opens=java.base/sun.nio.ch=ALL-UNNAMED
이렇게 하면 스파크 jdk17 환경에서 작동 이상무.
스파크 버전은 3.5.4 에서 테스트했다.
반응형
'프로그래밍' 카테고리의 다른 글
윈도우11 파워쉘 utf-8 한글 깨짐 수정 (0) | 2025.02.18 |
---|---|
Clickhouse Server Docker 설치 (0) | 2024.09.11 |
Clickhouse - 다른 Clickhouse 서버의 table을 현재 서버로 복사하기 (0) | 2024.09.10 |
JWT Token 생성 - Java and Javascript (0) | 2024.09.10 |
Spring AOP 의 JoinPoint 에서 class name, method name 얻는 방법 (0) | 2024.06.19 |