프로그래밍/Spark

Spark 기본 개념 및 용어정리

장경훈 2022. 11. 14. 13:17
이 포스팅은 ⟪러닝 스파크(2판)⟫(제이펍, 2022년)을 공부하면서 정리한 내용 입니다.


*Spark 애플리케이션 개념

  • SparkSession - 스파크의 코어 기능들을 사용할 수 있는 객체
  • job(잡) - 스파크 액션에 대한 응답으로 생성 (여러 task로 이루어진 병렬 연산)
  • stage(스테이지) - 잡은 의존성을 가지는 다수의 태스크 모음으로 나뉘는데 이를 스테이지라고 한다.
  • task(태스크) - 스파크의 작업 실행의 가장 기본적인 단위
  • 드라이버-> 잡 -> 스테이지 -> 테스크 순으로 분산처리 된다. ex) 드라이버에서 3개의 job으로 나뉘고 각각의 job에서 스테이지로 스테이지에서 3개의 테스크로 나뉜다. 

*트랜스포메이션과  액션

스파크는 기본적으로 분산 데이터 연산으로 트랜스포메이션과 액션으로 구분된다. 스파크는 이런 지연평가를 사용하여 쿼리 최적화와 데이터 내구성을 제공한다. 또한 데이터 프레임들은 트랜스포메이션을 거치는 동안 불변하기 때문에 장애가 발생해도 유연하게 대처할 수 있다.

  • 트랜스포메이션(transformation) - 원본데이터를 수정하지 않고 원본 데이터 프레임으로 새로운 데이터 프레임을 생성한다. ex) select(), filter() 또한 액션이 실행되기 전까지 대기하고 있다가 실행된다
  • 액션(action) - 현재까지 기록되어 있는 트랜스포메이션을 작동시킨다. 이 말은 액션이 실행되기 전까지는 트랜스포메이션이 작동되지 않는다는 것과 같다
트랜스포메이션 액션
orderBy() show()
groupBy() take()
filter() count()
select() collect()
join() save()

 

* 트랜스포메이션 의존성

트랜스포메이션은 2가지의 의존성으로 분류할 수 있다. 

  • 좁은 의존성 - 하나의 파티션만을 처리해 데이터 교환 없이 생성 ex) filter(), contains()
  • 넓은 의존성 - 다른 파티션으로부터 데이터를 가져와 합치는 일을 하는 경우 ex)groupBy(), orderBy()

'프로그래밍 > Spark' 카테고리의 다른 글

[spark] 캐싱, 영속화, 조인  (0) 2022.11.23
[Spark] 스파크 최적화 및 튜닝  (0) 2022.11.22
pyspark mysql 연동 (feat.docker)  (0) 2022.11.21
[Spark] sql + 데이터프레임 읽고 쓰기  (0) 2022.11.17
Spark 정형화 api  (0) 2022.11.15