강의
내부 연산
Transformations
- Narrow Dependencies
- 독립적인 Partition level 작업
- 병렬처리 가능
- select, where, filter, map, count
- Wide Depedencies
- Shuffling이 필요한 작업
- groupby, reduceby, partitionby, repartition, coalece
Actions
- Read, Write, Show, Collect
- Job 실행
- Lazy Execution
내부 동작
Action → Job → Stages → Tasks
- Action : 하나의 Job 생성 및 코드 실행
- Jobs : 다수의 Stage로 구성 후 Shuffling 발생시 추가 생성
- Stages : DAG 형태의 Task 병렬 실행 가능
- Tasks : 최소 실행 유닛으로 Executor에 의해 실행
데이터 저장
반복 처리에 최적화된 방법으로 데이터를 저장하는 방법 입니다.
Bucketing
- Hive 메타스토어 필요 : saveAsTable
- 특정 컬럼 기준 테이블 저장 : 반복 처리시 시간 단축
- 버킷 및 버킷의 수 지정 : Window 함수, JOIN에 사용되는 컬럼
- 데이터의 특성을 잘 아는 경우 사용 가능
(
df.write
.mode(saving_mode) # append/overwrite
.bucketBy(n, field1, field2, ...)
.sortBy(field1, field2, ...)
.option("path", output_path)
.saveAsTable(table_name)
)
File System Partitioning
- Hive 메타스토어 필요 : saveAsTable
- 특정 컬럼 기준 폴더 (Partition) 구조 생성 후 저장 : Partition Key
DataFrame의 Partition- 데이터 읽기 과정 최적화 : 스캐닝 과정 제거 혹은 축소
- Partition Key 선택 중요 : OverHead 가능성
'데브코스 TIL > 빅데이터, 스트리밍 데이터 처리' 카테고리의 다른 글
배치 처리 소개 (0) | 2024.01.22 |
---|---|
Spark 클라우드 (0) | 2024.01.22 |
Spark 파일 포맷 (0) | 2024.01.18 |
Spark Unit Test (0) | 2024.01.17 |
Hive 메타 스토어 (0) | 2024.01.17 |