본문 바로가기
일/aws

AWS Glue 활용기 #4 :: Glue Crawler 트러블 슈팅 1/2

by blair2dev 2022. 5. 1.

Gluw crawler 는 s3 데이터를 분석하여 글루 데이터 카탈로그 스키마를 만들어 내는 서비스 이다.

 

문제점 

gtm 수집 쪽에서 스키마를 변경할 경우 s3 에 기존 데이터와 스키마가 혼재되어 아테나 쿼리할 때 에러가 발생한다.

  • 필드의 데이터 타입을 변경 하였을 때 크롤러를 돌려도 변경감지가 안돼고 기존의 데이터 타입으로 인식한다. 

이를 해결하고 정책 수립

  • 한 테이블에서 혼재된 스키마 활용가능한지 
  • 한 테이블에서 사용하지 못한다면  대체 방법 ? 

 

 

1. 연구 1  : 스키마가 혼재 되어 있을 때 기존 테이블에서 인식하여 한 테이블로 처리가 가능한지 확인 

    1.1 먼저 데이터 타입을 변경한 것이 반영되지 않는 것을 해결해본다.

         1.1.1 크롤러 옵션 변경을 통해 시도 

             crawl new folders only -> crawl all folder

             

              변경사항을 무시하고 데이터 카탈로그에서 테이블 업데이트 안 함 -> 데이터 카탈로그에서 테이블 정의 업데이트

              데이터 카 탈로그에서 테이블과 파티션을 삭제합니다. -> 데이터 카탈로그에서 해당 테이블을 사용중지로 표시

       

               위와 같은 변경 사항에도 새로운 데이터 타입을 인식하지 못한다. 

           1.1.2  스키마 변경 전 데이터와 스키마 변경 후 데이터를 분리하여 디렉토리에 각각 넣은 후 각각 크롤러 생성 하여 조회 되는지 확인                     → 확인 결과 데이터의 디렉토리 위치 변경하면 정상적인 스키마 크롤링이 되었다.

           1.1.3  증분 크롤링이라는 것이 있다. 혹시 변경된 스키마를 감지하는 것인가 했는데 안정적인 스키마에서 새로운 파티션 인식에 쓰이는 듯 하다.

            1.1.4 aws 기술지원에 문의 시 글루 크롤러는 멀티플 스키마를 지원하지 않는다 라는 대답을 들었다고 한다. (https://stackoverflow.com/questions /52181722/suggested-json-structure-for-mixed-schema-events-to-be-crawled-by-glue)

 

        -> 결론 mixed 스키마를 가진 디렉토리에 크롤러를 돌리면 하나의 아테나 테이블에서 조회가 되지 않는다. 따라서 칼럼 하나에 스키마 버전을 표기하여 수정때 해당 버전을 올려서 파티셔닝 되게 한 후 크롤러는 각각의 테이블을 만들도록 세팅한다.