버전

  • Spark 2.4.8, Scala 2.11.12

Spark 2.4.8, Scala 2.11.12

회사에서 마이그래이션을 위해서 새로 구현한 Spark 배치/스트리밍을 서버에 배포하여 실행 테스트를 해보니 아래와 같은 에러가 발생하였다.

diagnostics: User class threw exception: java.lang.NoSuchMethodError: scala.Product.$init$(Lscala/Product;)V

위 에러는 Scala의 메소드를 실행시킬 수 없다는 에러 문구다
해당 에러가 발생하는 곳을 따라가보니 발생하는 곳을 확인해보니 case class에서 발생하는 에러였다.

case class TableInfo(serviceType: String, databaseName: String, tableName: String)

확인해보니, 서버에 구축된 Spark의 Scala 버전과 Build시 사용하는 Sacla 버전이 달라 문제가 발생한 것이였다.

spark 2.4.8버전이기때문에 당연히 scala 2.12버전으로 구축 했을 줄 알았는데 확인해보니 Scala 2.11.12 버전으로 설치해 놨었다..

spark 버전 확인하는 방법은 다음과 같다

[~]$ spark-sql --version
Welcome to
      ____              __
     / __/__  ___ _____/ /__
    _\ \/ _ \/ _ `/ __/  '_/
   /___/ .__/\_,_/_/ /_/\_\   version 2.4.8.3.1.0.0-2
      /_/

Using Scala version 2.11.12, Java HotSpot(TM) 64-Bit Server VM, 1.8.0_192

[~]$ spark-shell --version
Welcome to
      ____              __
     / __/__  ___ _____/ /__
    _\ \/ _ \/ _ `/ __/  '_/
   /___/ .__/\_,_/_/ /_/\_\   version 2.4.8.3.1.0.0-2
      /_/

Using Scala version 2.11.12, Java HotSpot(TM) 64-Bit Server VM, 1.8.0_192

다음 부터는 공식홈페이지에 아래와 같이 scala 2.12를 사용해야한다고 해서 당연히 그렇게 구축되어 있다고 생각하면 안 되겠다. 개발전에 구축된 버전을 먼저 확인하고 개발을 진행해야겠다.

Spark runs on Java 8, Python 2.7+/3.4+ and R 3.5+. For the Scala API, Spark 2.4.8 uses Scala 2.12. You will need to use a compatible Scala version (2.12.x).

Spark 2.4.8 공식홈페이지

+ Recent posts