AWS Glue 크롤러가 몇 시간 이상 실행되었지만 내 데이터 스토어에서 스키마를 식별할 수 없습니다.
간략한 설명
크롤러 실행 시간이 긴 일반적인 원인은 다음과 같습니다.
-
새 데이터 자주 추가: 첫 번째 크롤러가 실행되는 동안 크롤러는 각 파일의 첫 번째 메가바이트를 읽어 스키마를 유추합니다. 후속 크롤러가 실행되는 동안 크롤러는 대상의 파일(최초 실행 중에 크롤링된 파일 포함)을 나열하고 새 파일의 첫 번째 메가바이트를 읽습니다. 크롤러는 이전 크롤러 실행에서 읽은 파일을 읽지 않습니다. 따라서 후속 크롤러 실행이 더 빠른 경우가 많습니다. 이는 증분 크롤링 기능(활성화된 경우) 때문입니다. 이 옵션을 사용하면 크롤러가 후속 크롤링 실행에서 새 데이터만 읽습니다. 하지만 크롤러 실행 간에 데이터 스토어에 많은 파일이나 폴더를 추가하면 매번 실행 시간이 증가합니다.
-
압축 파일 크롤링: 압축 파일은 크롤링하는 데 더 오래 걸립니다. 크롤러가 첫 번째 메가바이트를 읽거나 파일을 나열하기 전에 파일을 다운로드하고 압축을 해제해야 하기 때문입니다.
참고: Apache Parquet, Apache Avro 및 Apache Orc 파일의 경우 크롤러는 첫 번째 메가바이트를 크롤링하지 않습니다. 대신 크롤러는 각 파일에 저장된 메타데이터를 읽습니다.
해결 방법
문제 해결을 시작하기 전에 크롤러를 실행해야 하는지 여부를 고려하십시오. AWS Glue 데이터 카탈로그에 테이블을 생성하고 추출, 변환, 로드(ETL) 작업 또는 Amazon Athena와 같은 다운스트림 서비스에서 테이블을 사용할 필요가 없다면 크롤러를 실행할 필요가 없습니다. ETL 작업의 경우 from_options를 사용하여 데이터 스토어에서 직접 데이터를 읽고 DynamicFrame의 변환을 사용할 수 있습니다. 이렇게 하면 ETL 파이프라인에 크롤러가 필요하지 않습니다. 크롤러가 사용 사례에 적합하다고 판단되면 다음 방법 중 하나 이상을 사용하여 크롤러 실행 시간을 줄입니다.
제외 패턴 사용
제외 패턴은 크롤러에게 특정 파일 또는 경로를 건너뛰도록 지시합니다. 제외 패턴을 사용하면 크롤러가 나열해야 하는 파일 수를 줄여 크롤러를 더 빠르게 실행할 수 있습니다. 예를 들어, 제외 패턴을 사용하여 이미 크롤링된 메타 파일과 파일을 제외합니다. 제외 패턴의 예를 포함한 자세한 내용은 패턴 포함 및 제외를 참조하세요.
샘플 크기 기능 사용
AWS Glue 크롤러는 샘플 크기 기능을 지원합니다. 이 기능을 사용하면 데이터 집합에서 샘플 파일을 크롤링할 때 크롤링할 각 리프 폴더의 파일 수를 지정할 수 있습니다. 이 기능이 켜져 있으면 크롤러는 데이터 집합의 모든 파일을 크롤링하는 대신 크롤링할 각 리프 폴더의 일부 파일을 무작위로 선택합니다. 데이터 형식에 대해 이미 알고 있고 폴더의 스키마가 변경되지 않는 경우 샘플링 크롤러를 사용하세요. 이 기능을 켜면 크롤러 실행 시간이 크게 단축됩니다.
여러 크롤러 실행
전체 데이터 스토어에서 하나의 크롤러를 실행하는 대신 여러 개의 크롤러를 실행하는 것이 좋습니다. 짧은 시간 동안 여러 크롤러를 실행하는 것이 크롤러 하나를 장시간 실행하는 것보다 낫습니다. 예를 들어, 데이터를 연도별로 파티셔닝하고 각 파티션에 대량의 데이터가 포함되어 있다고 가정합니다. 각 파티션에서 매년 다른 크롤러를 실행하면 크롤러가 더 빨리 완료됩니다.
더 작은 파일을 결합하여 더 큰 파일을 만듭니다.
소수의 대용량 파일보다 많은 수의 작은 파일을 크롤링하는 데 더 많은 시간이 걸립니다. 크롤러가 각 파일을 나열해야 하고 각 새 파일의 첫 번째 메가바이트를 읽어야 하기 때문입니다.
관련 정보
AWS Glue에서 ‘Unable to infer schema’ 예외를 해결하려면 어떻게 해야 합니까?
기본 분류자를 사용하여 파일을 구문 분석할 때 AWS Glue 크롤러가 고정 너비 데이터 파일을 UNKNOWN으로 분류하는 이유는 무엇입니까?