핀아의 저장소 ( •̀ ω •́ )✧

02_04. DataFrame 본문

Big Data/Engineering

02_04. DataFrame

_핀아_ 2023. 5. 24. 16:18

✅ DataFrame은 관계형 데이터

  • 한마디로 관계형 데이터셋: RDD + Relation
  • RDD가 함수형 API를 가졌다면 DataFrame은 선언형 API
  • 자동으로 최적화가 가능
  • 타입이 없다 -> DataFrame은 내부적으로 타입을 강제하지 않는다.

DataFrame의 특징

DataFrame: RDD의 확장판

  • 지연 실행 (Lazy Execution)
  • 분산 저장
  • Immutable
  • 열 (Row) 객체가 있다
  • SQL 쿼리를 실행할 수 있다
  • 스키마를 가질 수 있고 이를 통해 성능을 더욱 최적화 할 수 있다.
  • CSV, JSON, Hive 등으로 읽어오거나 변환이 가능하다.

DataFrame의 스키마를 확인하는 법

  • dtypes
  • show()
    • 테이블 형태로 데이터를 출력
    • 첫 20개의 열만 보여준다
  • printSchema()
    • 스키마를 트리 형태로 볼 수 있다.

복잡한 DataType들

  • ArrayType
  • MapType -> dictionary
  • StructType -> object

DataFrame Operations

SQL과 비슷한 작업이 가능하다

  • Select
  • Where
  • Limit
  • OrderBy
  • GroupBy
  • Join

1️⃣ select

  • 사용자가 원하는 Column이나 데이터를 추출 하는데 사용

  • DataFrame도 Lazy Execution이므로 collect()로 불러줘야 함
  • 두 번째의 경우 사용자가 원하는 ‘name’과 ‘age’를 select를 하여 데이터 추출

2️⃣ Agg

  •  Aggregate의 약자로, 그룹핑 후 데이터를 하나로 합치는 작업

  • 두 번째 실행문의 경우 함수와 컬럼을 지정하여 첫 번째와 똑같은 효과를 낼 수 있음

3️⃣ GroupBy

  • 사용자가 지정한 Column을 기준으로 데이터를 Grouping하는 작업

4️⃣ Join

  • 다른 DataFrame과 사용자가 지정한 Column을 기준으로 합치는 작업

 DataFrame 조작하기

  • stocks 내 4번째 데이터는 숫자값이기 때문에 다른값들과는 다르게 integer값으로 schema가 지정된다.

  • ‘currency’값을 기준으로 grouping 해주고 가격 평균 출력과 각 나라별 주식 개수 출력

'Big Data > Engineering' 카테고리의 다른 글

02_03. SQL 기초  (0) 2023.05.24
02_02. SparkSQL 소개 및 기초  (0) 2023.05.14
02_01. Structured vs Unstructured Data  (0) 2023.05.14
01_08. Shuffling & Partitioning  (0) 2023.05.14
01_07. Key-Value RDD Operations & Joins  (0) 2023.05.14
Comments