본문 바로가기

데이터처리/spark

[Trouble Shooting] spark- Java 버전 dependency

[이미지를 다 날려버렸다...]

 

java 8 버전에  

spark-api 를 이용해서

spark-sql 으로 데이터 처리를 하려고 하는 중에 SparkSession 이 json 파일을 불러와서

Dataset 으로 넣어주고, 그 데이터를 show 하는 과정에서

에러가 발생했다.

 

NoSuchFieldException 이 발생했는데 ,

도무지 구글링을 해도 원인을 찾을 수가 없었다.

 

공홈에서도 관련 자료가 없어서 한참을 삽질 하던중에

디펜던시 문제가 아닐까 의심이 들었다.

 

의심이 들었던 이유는 자바 8에서는 

spark-sql_2.11 에 2.1.0 버전에서 호환이 되었는데

그 이상 버전에서는 동작이 정상적으로 안되서 의심이 됐었다

 

 

이렇게 spark-sql 에는 commons-compiler 의 의존성을 가지고 있는데 버전이 3.1.2 버전이었다.

근데 자바 8에서는 컴파일러 버전이 3.0.8과 호환이 된다는 말을 들었다.

exclusion 을 써서 제외시키고 3.0.8로 변경 해보니 ,

Dataset 까지는 정상적으로 생성되는데 , show 를 부르는 순간 위와 같은 에러가 발생했다.

 

엄청난 삽질을 했는데도 원하는 정보를 찾을 수가 없었다.

모두들 정상적으로 show() 가 불려지는데 나만 안된다 ;;

 

그러다 자바 11과 스파크가 호환이 잘된다는 걸 보고

혹시나 하는 마음으로 자바 11로 올리고 , 

spark-sql을 scala12 버전에 버전을 2.4.3 으로 올린 후에 

spark-sql 이 가지고 있는 common-compiler 의 버전을 exclusion 시켜 주고

내가 원하는 버전의 common-compiler 버전을 넣어주니

정상 동작 했다...

 

짜증나는 버전 문제였어서 기록해둠