Miner

Spark(9) - 데이터 구조 본문

데이터 엔지니어링/Spark

Spark(9) - 데이터 구조

MineTime76 2024. 2. 7. 19:45

RDD, DataFrame, Dataset 

  • Immutable Distributed Data
  • RDD (Resilient Distributed Dataset) - 클러스터내의 서버에 분산된 데이터를 지칭, 레코드별로 존재하지만 스키마가 존재하지 않음, 구조화, 비구조화 된 데이터 모두 지
  • RDD(low_level) 가 가장 밑 바닥에 있는 구조, 그 위에 DataFrame과 Dateset 이 올라가 있는 구조
  • RDD로 할 수 있는 일은 많지만 생산성이 낮아서 대부분 파이썬으로 코딩을 한다고 하면 DataFrame을 사용하고 Scala혹은 Java로 코딩한다고 하면 Dataset을 사용한다.  구조화된 데이터를 사용한다고 하면 SparkSql을 사용하는 것이 일반적, Pyspark에서는 DataFrame을 사용
  • DataFrame은 RDD 보다 조금 더 구조화가 되어 있다. Record에 Field가 있다. 꼭 타입이 있지는 않는다. Dataset은 타입이 지정이 되고  다양한 데이터 소스(HDFS, Hive, 외부 데이터베이스, RDD)에 지원이 된다. 지원지금은 Dataset의 특수한 형태가 DataFrame이라고 보면 된다. 

Spark 데이터 구조

RDD

변경이 불가능한 분산 저장된 데이터

  • RDD는 다수의 파티션으로 구성
  • 로우레벨의 함수형 변환 지원(map, filter, flatMap..)

일반 파이썬 데이터는 parallelize함수로 RDD로 변환

  • 반대는 collect로 파이썬 데이터로 변환가능

'데이터 엔지니어링 > Spark' 카테고리의 다른 글

Spark(10) - 프로그램 구조  (0) 2024.02.07
Spark(8) : 데이터 처리  (0) 2024.02.07
Spark(7)  (0) 2024.01.30
Spark(6) - Spark 사용  (0) 2024.01.30
Spark(5) - Spark  (0) 2024.01.30