딥상어동의 딥한생각 2021. 4. 21. 00:56

www.yes24.com/Product/Goods/67116641

 

스파크 완벽 가이드

스파크 창시자가 알려주는 스파크 활용과 배포, 유지 보수의 모든 것 오픈소스 클러스터 컴퓨팅 프레임워크인 스파크의 창시자가 쓴 스파크에 대한 종합 안내서이다. 스파크 사용법부터 배포,

www.yes24.com

스파크 완벽 가이드를 참조하여 작성하였습니다.

 

트랜스포메이션

 

- 스파크의 데이터 구조는 "불변성"을 가짐
- 즉, 한번 생성하면 변경 불가
- 따라서, 변경을 하기 위해서는 변경하는 방법을 스파크에 알려주어야 함
- 여기서 중요한 포인트 알려주는 행동과 / 실제 행동은 별개이다.
- 즉, 알려주기만 한다면 "변경 방법만 알고 있는채로" 액션은 하지 않고 대기를 하고 있게 된다.

 

액션

 

- 트랜스포메이션은 곧 "논리적 실행 계획"이라고 할 수 있다.
- 따라서, 실제 연산을 위해서는 "액션" 명령을 내려야 한다.
- 액션을 지정하면 스파크 잡이 실행된다. 

 

실행 계획

 

#데이터 불러오기
flightData2015 = spark.read.option("inferSchema", "true").option("header", "true").csv("/FileStore/tables/flight-data/csv/2015_summary.csv")

#첫 번째 실행 계획
flightData2015.sort("count").explain()

 

 

- 위에서 아래로 읽는다.
- 첫번째 줄을 결과, 마지막 줄은 원천
- 가운데에 실행 계획
- 실행 계획은 말 그대로 실행 계획, 액션이 없다면 실행이 "지연된" 상태로 있게 된다.

 

#실행계획을 시작하기 위한 액션 호출, 셔플의 출력 파티션 수 줄이기, 4040포트 스파크 UI에서 확인
spark.conf.set("spark.sql.shuffle.partitions", "5")
flightData2015.sort("count").take(2)

 

 

take(), 실제 액션을 취해야 spark job이 시작 된다.