Spark 학습정리

류기탁·2022년 3월 14일
2

학습메모

목록 보기
1/1

Spark 사용 기술

데이터 처리 - Spark SQL
그래프 처리 - Graph X

프로젝트 환경

java 8 / Spring Boot ( Gradle )
hadoop 3.2.2
Spark 3.1.3

유의점
Java 8 prior to version 8u92 support is deprecated as of Spark 3.0.0. For the Scala API, Spark 3.1.3 uses Scala 2.12. 

docs

https://spark.apache.org/docs/3.1.3/quick-start.html

Window10에서 Spark 설치

https://icefree.tistory.com/entry/Spark-Window-10%EC%97%90-Spark%EC%84%A4%EC%B9%98

리눅스가 아닌 윈도우에서 사용하려면

https://github.com/cdarlint/winutils

gradle 적용하기

// https://mvnrepository.com/artifact/org.apache.spark/spark-sql
compileOnly group: 'org.apache.spark', name: 'spark-sql_2.12', version: '3.1.3'

// https://mvnrepository.com/artifact/org.apache.spark/spark-core
implementation group: 'org.apache.spark', name: 'spark-core_2.12', version: '3.1.3'
  • 위를 build.gradle에 dependencies에 넣을 경우 다음과 같은 문제가 발생
    LogBack을 중복으로 선언한 문제
Caused by: java.lang.IllegalArgumentException: LoggerFactory is not a Logback LoggerContext but Logback is on the classpath. Either remove Logback or the competing implementation (class org.slf4j.impl.Reload4jLoggerFactory loaded from file:/C:/Users/-----/.gradle/caches/modules-2/files-2.1/org.slf4j/slf4j-reload4j/1.7.36/db708f7d959dee1857ac524636e85ecf2e1781c1/slf4j-reload4j-1.7.36.jar). If you are using WebLogic you will need to add 'org.slf4j' to prefer-application-packages in WEB-INF/weblogic.xml: org.slf4j.impl.Reload4jLoggerFactory
  • build.gradle에서 starter에서 다음과 같이 logback을 제외한다.
    로그가 뜨지 않는 문제 발생한다.
implementation("org.springframework.boot:spring-boot-starter-web") {
		exclude module : "logback-classic"
	}
  • 일단 spark를 실행해보려고 로그는 제쳐두고 실행해도, 빌드 문제가 발생한다.
Caused by: java.lang.ClassNotFoundException: org.apache.spark.sql.SparkSession
  • build.gradle의 compileOnly를 Implementation으로 변경해서 문제를 해결하고, 실행하려니 다음과 같은 오류 발생
Command line is too long. Shorten command line for .
A master URL must be set in your configuration
Caused by: java.lang.ClassNotFoundException: org.codehaus.janino.InternalCompilerException

janino가 문제인데 이걸 spark-sql에서 / core 에서 exclude 해도 같은 오류가 난다.
java 버전이 문제인가..

  • 해결 : build.gradle 수정하고, Invalidate cache를 해줘야 반영이 되더라.
    위 spark 디펜던시에세서 exclude 해주면 된다.

이러면 예제는 실행된다!!

참고한 사이트

profile
오늘도 행복한 하루!

0개의 댓글