파티셔닝과 지연 처리

PySpark로 데이터 정제하기

Mike Metzger

Data Engineering Consultant

파티셔닝

  • DataFrame은 파티션으로 분할됩니다
  • 파티션 크기는 달라질 수 있습니다
  • 각 파티션은 독립적으로 처리됩니다
PySpark로 데이터 정제하기

지연 처리

  • 변환은 지연(lazy) 수행됩니다
    • .withColumn(...)
    • .select(...)
  • 액션이 실행될 때까지 실제로는 아무 일도 일어나지 않습니다
    • .count()
    • .write(...)
  • 변환은 최적의 성능을 위해 재정렬될 수 있습니다
  • 때때로 예기치 않은 동작을 유발할 수 있습니다
PySpark로 데이터 정제하기

ID 추가

일반 ID 필드:

  • 관계형 데이터베이스에서 흔함
  • 보통 증가하는 정수이며, 순차적이고 고유함
  • 병렬 처리에 비우호적
id last name first name state
0 Smith John TX
1 Wilson A. IL
2 Adams Wendy OR
PySpark로 데이터 정제하기

단조 증가 ID

pyspark.sql.functions.monotonically_increasing_id()

  • 64비트 정수, 값이 증가하며 고유함
  • 반드시 순차적이지는 않음(공백 존재)
  • 완전 병렬 처리 가능
id last name first name state
0 Smith John TX
134520871 Wilson A. IL
675824594 Adams Wendy OR
PySpark로 데이터 정제하기

메모

Spark는 지연(lazy) 실행임을 기억하십시오!

  • 가끔 순서가 바뀔 수 있습니다
  • 조인을 수행하면 ID가 조인 후에 부여될 수 있습니다
  • 변환을 반드시 테스트하십시오
PySpark로 데이터 정제하기

연습해 봅시다!

PySpark로 데이터 정제하기

Preparing Video For Download...