본문 바로가기
빅데이터/spark

[spark] spark-shell 실행 시 발생하는 java.lang.NoSuchFieldError: JAVA_9 오류 처리

by hs_seo 2024. 2. 25.

spark-shell을 실행할 때 다음과 같은 오류가 발생하는 경우가 있습니다.

 

24/02/22 13:09:59 INFO SparkEnv: Registering MapOutputTracker
24/02/22 13:09:59 INFO SparkEnv: Registering BlockManagerMaster
24/02/22 13:09:59 INFO BlockManagerMasterEndpoint: Using org.apache.spark.storage.DefaultTopologyMapper for getting topology information
24/02/22 13:09:59 INFO BlockManagerMasterEndpoint: BlockManagerMasterEndpoint up
java.lang.NoSuchFieldError: JAVA_9
  at org.apache.spark.storage.StorageUtils$.<init>(StorageUtils.scala:207)
  at org.apache.spark.storage.StorageUtils$.<clinit>(StorageUtils.scala)
  at org.apache.spark.storage.BlockManagerMasterEndpoint.<init>(BlockManagerMasterEndpoint.scala:110)
  at org.apache.spark.SparkEnv$.$anonfun$create$9(SparkEnv.scala:348)
  at org.apache.spark.SparkEnv$.registerOrLookupEndpoint$1(SparkEnv.scala:287)
  at org.apache.spark.SparkEnv$.create(SparkEnv.scala:336)
  at org.apache.spark.SparkEnv$.createDriverEnv(SparkEnv.scala:191)
  at org.apache.spark.SparkContext.createSparkEnv(SparkContext.scala:277)
  at org.apache.spark.SparkContext.<init>(SparkContext.scala:460)
  at org.apache.spark.SparkContext$.getOrCreate(SparkContext.scala:2690)
  at org.apache.spark.sql.SparkSession$Builder.$anonfun$getOrCreate$2(SparkSession.scala:949)
  at scala.Option.getOrElse(Option.scala:189)
  at org.apache.spark.sql.SparkSession$Builder.getOrCreate(SparkSession.scala:943)
  at org.apache.spark.repl.Main$.createSparkSession(Main.scala:106)
  ... 55 elided
<console>:14: error: not found: value spark
       import spark.implicits._
              ^
<console>:14: error: not found: value spark
       import spark.sql
              ^
              ^

 

이 문제는 commons-lang3 라이브러리의 라이브러리 버전이 낮아서 발생합니다.

 

spark 에서 제공하는 라이브러리는 3.12.0 버전이라서 오류가 발생할 수 없지만, hive 연동을 위해서 추가한 hive-exec.jar 파일에서 shade로 추가 되어 있는 commons-lang3 라이브러리의 버전이 낮아서 발생하였습니다.

 

이런 경우는 해당 라이브러리를 동일한 버전으로 다시 빌드하거나, shade 된 라이브러리의 class 파일을 삭제하여 오류를 해결할 수 있습니다.

반응형