아래의 글은 T아카데미 아파치 스파크 입문 강의를 듣고 정리한 내용입니다
4강. Spark 데이터처리 실습2
DAG
단방향을 가지는 Acyclic 그래프
각각의 데이터프레임들이 그래프의 노드, 방향은 Transformation이 된다.
그래서 C에서 문제가 생겼으면 B부터 다시 실행이 되도록
Spark에 Action이 날라가면, Spark 대시보드에 job 생성
N개의 Stage로 나뉘고, 각각의 Stage에서 N개의 Task로 구성.
operation 종류에 따라 같은 Transformation단계면 같은 Stage로 구분된다.
사용가능한 core갯수에 따라 task로 구분된다.
예를 들어
파일을 읽고, 토크나이징 하는 Transformation단계로 stage1,
새로운 파일을 읽어서 stage2로, inner join과 같은 shuffing하는 단계로 stage3, join결과를 write하는 stage4.
Transformation
- narrow Transformation : map , 하나씩 대응되는방식
- wide Transformation: 키를 기반으로 sort , 네트워크io발생
Actions
workflow의 final stage. 이때 DAG가 트리거 된다.
driver에게 result를 리턴하는 단계
Transformation단계에서는 spark가 아무것도 실행되지 않고 있다가 이때 Actions단계가 되면 최적화하는 일을 한다.
Structed API Execution
지원되는 구조화 api : SQL, DataFrame, DataSets
카탈리스트 옵티마이저 : 데이터프레임을 사용하면서 거의 다른 언어들끼리 동일한 성능을 낼 수 있도록 성능개선
카탈리스트 옵티마이저 단계
Logical planning
유저의 코드 (카탈로그) : 데이터나 테이블에 대한 메타정보 -> 논리적으로 optimaization 수행
Physical Planning
클러스터 안에서 실행되기 위한 최종적으로 최적의 DAG그래프를 생성
그래서 dataset이던, SQL이던, dataFrame이던 실행계획은 동등해짐
DataFrame
high-level
원하느 컬럼을 가져오거나, 조인하거나, count,sum,avg,필터링할때 주로 사용
jdbc,hive 등 여러가곳에서 데이터를 가져올 수 있고, 그걸연산에서 다른 db로 넣을수도 있다.
데이터프레임은 spark내부에서 최적화를 하기 때문에 카탈리스트 옵티마이저을 굳이 고려하지 않아도 된다.
DataSet
데이터프레임의 row기반 데이터들. (dataframe = dataset[row])
dataframe은 spark에서 제공해주는 다양한 언어를 사용할 수 있는 반면에,
DataSet은 scala,java와 같이 jvm사용하는 언어만 사용할 수 있음.
df보다 커스텀하고, 타입 안정성이 높은 경우 dataset을 선택할 수 있음,
SparkSQL
일반적으로 쓰는 SQL을 spark내장으로 넣은것
ETL은 HIVE로 돌리고, EDA나 BI환경에서 데이터를 빨리보여줘야할때 SparkSQL 사용
Spark Session이 연결되어 있는 동안에 raw data를 tempview로 만들어서 사용한다.
그리고 SQL수행, Zeppelin에서는 SQL에 대해서 바로 시각화 차트 및 대시보드를 제공해주어서 편리
'Book & Lesson' 카테고리의 다른 글
[데엔스터디4] ETL/Airflow소개 (2) | 2021.09.03 |
---|---|
[데엔스터디3] 데이터엔지니어를 위한 SQL 실습 (0) | 2021.08.25 |
[Spark강의4-2] Spark 데이터처리 실습2 -DF Transformation (0) | 2021.08.23 |
[Spark강의3-2] Spark 데이터처리 실습1 - RDD개념 (0) | 2021.08.22 |
[Spark강의3-1] Spark 데이터처리 실습1 (0) | 2021.08.22 |
[Spark강의2] Spark의 실시간/배치 (0) | 2021.08.18 |