LabHub
배우기 러닝패스 코스

Apache Spark — 느린 잡의 답은 실행 계획과 이벤트 로그에 있다 · 스키마와 깨진 줄 · 퀴즈

퀴즈: 스키마와 깨진 줄

LabHub 에서 이어서 보기

6문항. 정답과 해설은 풀어 본 뒤에 보여 드립니다.

  1. 협력사 CSV 를 inferSchema=True 로 읽었더니 어제까지 int 이던 qty 가 오늘 string 으로 나왔다. 가장 그럴듯한 원인은?

    1. 오늘 파일이 커서 samplingRatio 가 자동으로 줄었다
    2. qty 칸에 정수로 볼 수 없는 값이 한 줄 섞였다
    3. inferSchema 는 원래 모든 칼럼을 string 으로 읽는다
    4. 머리줄이 빠져서 칼럼 이름을 찾지 못했다
  2. PERMISSIVE 모드에서 깨진 줄의 원문을 결과에 남기려면 무엇이 필요한가?

    1. mode 를 FAILFAST 로 바꿔 원문을 예외 메시지로 받는다
    2. inferSchema 를 켜서 손상 칼럼이 자동으로 생기게 한다
    3. 사용자 스키마에 손상 칼럼 이름의 STRING 칼럼을 넣는다
    4. samplingRatio 를 1.0 으로 올려 모든 줄을 검사한다
  3. 깨진 줄이 섞인 파일을 FAILFAST 로 읽고 count() 만 했더니 오류 없이 전체 줄 수가 나왔다. 이유는?

    1. count 에는 칼럼이 필요 없어 칼럼 가지치기로 파싱을 건너뛰었다
    2. FAILFAST 는 첫 1,000 줄만 검사하고 나머지는 통과시킨다
    3. count 는 드라이버에서 파일 크기로 줄 수를 추정한다
    4. 스키마를 주면 FAILFAST 가 PERMISSIVE 로 바뀐다
  4. PERMISSIVE 와 DROPMALFORMED 중 운영 파이프라인에서 PERMISSIVE 를 고르는 가장 큰 이유는?

    1. PERMISSIVE 가 파싱 속도가 훨씬 빠르기 때문
    2. DROPMALFORMED 는 스키마를 줄 수 없기 때문
    3. PERMISSIVE 는 업무 규칙 위반까지 걸러 주기 때문
    4. 깨진 줄을 격리하고 개수를 지표로 남길 수 있기 때문
  5. FAILFAST 로 읽은 뒤 전체 칼럼을 쓰다가 깨진 줄에서 실패했다. 원인 쪽에 붙는 오류 조건 이름은?

    1. PATH_NOT_FOUND
    2. MALFORMED_RECORD_IN_PARSING
    3. PATH_ALREADY_EXISTS
    4. CANNOT_PARSE_JSON_ARRAYS_AS_STRUCTS
  6. 스키마를 주고 header=True 로 읽었는데 협력사가 칼럼 순서를 바꿔 보냈다. 기본 설정에서 일어나는 일은?

    1. enforceSchema 기본값 true 로 머리줄을 무시해 위치대로 틀린 값이 들어간다
    2. 머리줄 이름을 보고 스키마 칼럼과 자동으로 맞춰 읽는다
    3. 칼럼 순서가 다르면 FAILFAST 가 아니어도 읽기가 실패한다
    4. 순서가 바뀐 칼럼은 모두 손상 칼럼으로 들어간다