데브코스 TIL/빅데이터, 스트리밍 데이터 처리

Spark 내부동작

예니ㅣ 2024. 1. 18. 14:07

강의

내부 연산

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