[Spark] 데이터프레임, 데이터셋, RDD
Spark 세션

- Spark 세션을 만드는 것이 Spark 프로그램의 시작
- appName을 통해 세션의 이름을 정하고
- .config를 통해 세션에 적용할 세부적인 옵션을 다룸
- .getOrCreate() 는 appName을 보고 기존에 같은 내용이 있으면 get 하고 없으면 create해줌
Spark 데이터 구조
RDD(Resilient Distributed Dataset)
- 로우레벨 데이터로 클러스터내의 서번의 분산된 데이터를 지칭
- 레코드별로 존재
- 구조화된 데이터나 비구조화된 데이터 모두 지원
Dataframe과 Dataset
- RDD위에 만들어지는 하이레벨 데이터로 RDD 와는 달리 필드 정보를 가지고 있음(테이블)
- Dataset은 Dataframe과는 달리 타입 정보가 존재하며 컴파일 언어에서 사용가능
- 컴파일 언어: Scala/Java에서 사용가능
- PySpark에서는 Dataframe을 사용
- SparkSQL을 사용하는 것이 더 일반적
Spark 데이터 구조 - RDD
변경이 불가능한 분산 저장된 데이터
- RDD는 다수의 파티션으로 구성되고 Spark 클러스터내 서버들에 나눠 저장
- 로우레벨의 함수형 변환 지원
- RDD가 아닌 일반 파이썬 데이터는 parallelize 함수로 RDD로 변환
Spark 데이터 구조 - 데이터 프레임

데이터 프레임도 RDD 처럼 변경이 불가한 분산 저장된 데이터
RDD와는 다르게 관계형 데이터베이스 테이블처럼 컬럼으로 나눠 저장
- 판다스의 데이터 프레임과 거의 흡사
- 데이터 프레임은 다양한 데이터소스 지원: 파일, Hive, 외부 데이터베이스, RDD 등등
스칼라, 자바, R, 파이썬과 같은 언어에서 지원
Spark 데이터 구조 - 데이터 셋
- 데이터 셋은 타입이 있는 컴파일 언어에서만 사용 가능
- 자바와 스칼라에서만 지원되며 파이썬에서는 사용 불가