데이터 처리 기법

PySpark로 데이터 정제하기

Mike Metzger

Data Engineering Consultant

무엇을 파싱하려 하나요?

  • 잘못된 데이터
    • 빈 행
    • 주석 처리된 줄
    • 헤더
  • 중첩 구조
    • 다중 구분자
  • 비정형 데이터
    • 행마다 컬럼 수가 다름
  • CSV 데이터에 초점
width, height, image

# This is a comment
200    300    affenpinscher;0
600    450    Collie;307    Collie;101
600    449    Japanese_spaniel;23
PySpark로 데이터 정제하기

Stanford ImageNet 주석

  • 이미지에서 견종 식별
  • 이미지 내 식별된 모든 개 목록 제공
  • 기타 메타데이터(기본 폴더, 이미지 크기 등)

예시 행:

02111277    n02111277_3206    500    375    Newfoundland,110,73,416,298
02108422    n02108422_4375    500    375    bull_mastiff,101,90,214,356 \
 bull_mastiff,282,74,416,370
PySpark로 데이터 정제하기

빈 줄, 헤더, 주석 제거

Spark의 CSV 파서:

  • 빈 줄을 자동 제거
  • 선택 인자로 주석 제거 가능
df1 = spark.read.csv('datafile.csv.gz', comment='#')
  • 헤더 필드 처리
    • 인자로 지정
    • 스키마가 있으면 무시
df1 = spark.read.csv('datafile.csv.gz', header='True')
PySpark로 데이터 정제하기

자동 컬럼 생성

Spark는 다음을 수행합니다:

  • sep 인자에 따라 DataFrame 컬럼을 자동 생성
    df1 = spark.read.csv('datafile.csv.gz', sep=',')
    
  • 기본 구분자는 ,
  • 문자열에 sep가 없어도 파싱 가능
    df1 = spark.read.csv('datafile.csv.gz', sep='*')
    
  • 데이터를 기본 컬럼 _c0에 저장
  • 중첩 구분자를 올바르게 처리 가능
PySpark로 데이터 정제하기

연습해 봅시다!

PySpark로 데이터 정제하기

Preparing Video For Download...