without haste but without rest
IntelliJ에서 Scala로 Spark 프로젝트 시작하기 본문
환경
- MacOS: Monterey 12.1
- IntelliJ: 2021.03.01
- Java: 8
- sbt: 1.6.0
- Scala: 2.12.0
- Spark: 3.1.2
1. Intellij 플러그인에서 스칼라 설치
scala 플러그인을 설치한다.
(맥 os 기준으로 인텔리제이에서 쉬프트를 두번 누르면 검색 탭이 나타나는데 plugins를 검색해서 진입할 수도 있다. )
2. 스칼라 프로젝트 생성
구글링 해보니 메이븐으로 생성하기도 하던데 스칼라 공식 도큐먼트에서는 sbt 기준으로 설명을 해서 sbt로 진행했다.
sbt란 무엇인가?
sbt: 1.6.0
scala: 2.12.0
java:8
spark: 3.1.2
3. Saprk dependency 설정
build.sbt 파일에 디펜던시를 추가 해준다. 값을 변경하게 되면 경우 우측 상단에 파란색 화살표 모양으로 리로드 버튼이 활성화 되는데, 클릭해서 리로드 한다. (?... spark-core 디펜던시 라인에 띄어쓰기 하나가 잘못 들어갔는데, 실행이 잘 됐다.)
초기값은 lazy val ... 등의 변수가 디폴트 값인데 스파크 데모를 위함이므로 우선 날리고 설정해주자.
// build.sbt
name := "spark-demo"
version := "0.1"
scalaVersion := "2.12.10"
val sparkVersion = "3.1.2"
libraryDependencies += "org.apache.spark" %% "spark-core" %sparkVersion
libraryDependencies += "org.apache.spark" %% "spark-sql" %sparkVersion
4. Spark demo
SparkDemo 오브젝트 파일을 하나 생성하고 테스트 코드를 작성한다.
1. Spark 세션을 생성
2. range 메서드를 사용해서 DataFrame을 생성
3. DataFrame 출력
// SparkDemo.scala
import org.apache.spark.sql.SparkSession
object SparkDemo extends App{
val spark = SparkSession.builder()
.appName("spark-demo")
.master("local[*]")
.getOrCreate()
val myRange = spark.range(10)
myRange.show()
}
빌드 한다. (^ + shift + R )
스파크를 이용해서 데이터프레임 생성 성공.
스파크 프로젝트, 학습을 위한 기본적인 설정이 끝났다. pyspark를 활용할 수도 있지만, 스파크의 고수준 API인 dataset의 정적 타입까지 활용하기 위해서 스파크의 네이티브 언어인 스칼라를 선택했다. 아마도 앞으로의 흐름은 점점 Flink로 넘어가는 듯 한데 플링크도 스칼라 기반의 프레임워크라 스칼라로 스파크를 배워두면 플링크로 넘어갈 때도 많은 도움이 될 듯 하다.
'Data Engineering & DataOps > Spark' 카테고리의 다른 글
Zeppelin 커스텀 컨테이너 이미지 빌드 (0) | 2022.02.08 |
---|---|
Spark Streaming tutorial (0) | 2022.01.07 |
Spark 개념과 특징 (0) | 2021.12.10 |
spark2 - pyspark TypeError: an integer is required (got type bytes) & zeppelin pyspark is not responding (0) | 2021.08.05 |