셔플링 : 파티션간에 데이터 이동이 필요한 경우 발생
셔플링이 발생하는 경우
- 명시적 파티션을 새롭게 하는 경우
- 시스템에 의해 이뤄지는 셔플링
hasing partition
range partition
데이터 구조
- RDD
로우레벨 데이터로 클러스터내의 서버에 분산된 데이터를 지칭
레코드별로 존재하지만 스키마가 존재하지 않음
- 구조화된 데이터나 비구조화된 데이터 모두 지원
변경이 불가능한 분산 저장된 데이터
- 다수의 파티션으로 구성
- 로우레벨의 함수형 변환 지원(map, filter, flatMap 등등)
일반 파이썬 데이터는 parallelize 함수로 RDD로 변환
- 반대는 collect로 파이썬 데이터로 변환 가능
- DataFrame
변경이 불가한 분산 저장된 데이터(RDD 위에서 돌기 때문)
RDD와는 다르게 관계형 데이터베이스 테이블처럼 컬럼으로 나눠 저장
- Pandas의 데이터 프레임 혹은 RDB의 테이블과 거의 흡사
- 다양한 데이터 소스 지원: HDFS, Hive, 외부 DB, RDD 등
스칼라, 자바, 파이썬과 같은 언어에서 지원
- Dataset
RDD위에 만들어지는 RDD와는 달리 필드 정보를 갖고 있음(테이블)
Dataset은 타입 정보가 존재하며 컴파일 언어에서 사용 가능
컴파일 언어 : Scala/Java에서 사용 가능
PySpark에서는 DataFrame을 사용
Spark Session 생성
Spark 프로그램의 시작은 Spark Session을 생성하는 것
'Data Engineering > Spark' 카테고리의 다른 글
Spark Start(2) (3) | 2024.10.31 |
---|---|
Spark Start(1) (1) | 2024.10.30 |
Spark Components (0) | 2024.10.25 |
About Spark (2) | 2024.10.11 |