AWS Glue에서 크롤러가 여러 테이블을 생성하지 못하도록 하려면 어떻게 해야 합니까?

최종 업데이트 날짜: 2021년 7월 30일

AWS Glue 크롤러가 내 소스 데이터에서 여러 테이블을 생성하는 이유는 무엇이며, 이를 방지하려면 어떻게 해야 합니까?

간략한 설명

AWS Glue 크롤러는 소스 데이터 파일이 다음 항목을 동일하게 사용하지 않을 때 여러 테이블을 생성합니다.

  • 형식(예: CSV, Parquet 또는 JSON)
  • 압축 유형(예: SNAPPY, gzip 또는 bzip2)
  • 스키마
  • Amazon Simple Storage Service(Amazon S3) 파티션의 구조

해결 방법

크롤러 로그 확인

크롤러 로그를 확인하여 크롤러가 여러 테이블을 생성하게 하는 파일을 식별합니다.

1.    AWS Glue 콘솔을 엽니다.

2.    탐색 창에서 [Crawlers]를 선택합니다.

3.    크롤러를 선택한 다음 [로그(Logs)] 링크를 선택하여 Amazon CloudWatch 콘솔에서 로그를 봅니다.

4.    AWS Glue가 이전 크롤러 실행 중에 여러 테이블을 생성한 경우 로그에 다음과 같은 항목이 포함됩니다.

[439d6bb5-ce7b-4fb7-9b4d-805346a37f88]
 INFO : Created table 
2_part_00000_24cab769_750d_4ef0_9663_0cc6228ac858_c000_snappy_parquet in
 database glue
[439d6bb5-ce7b-4fb7-9b4d-805346a37f88]
 INFO : Created table 
2_part_00000_3518b196_caf5_481f_ba4f_3e968cbbdd67_c000_snappy_parquet in
 database glue
[439d6bb5-ce7b-4fb7-9b4d-805346a37f88]
 INFO : Created table 
2_part_00000_6d2fffc2_a893_4531_89fa_72c6224bb2d6_c000_snappy_parquet in
 database glue

로그 항목에는 크롤러가 여러 테이블을 만드는 원인이 되는 파일의 이름이 포함됩니다.

여러 테이블 생성 방지

여러 테이블이 생성되지 않도록 하려면 다음 솔루션 옵션 중 하나 이상을 고려하세요.

  • 모든 데이터 파일이 동일한 스키마, 형식 및 압축 유형을 사용하는지 확인합니다. 일부 파일이 다른 스키마를 사용하는 경우(예: 스키마 A는 필드 X가 INT 유형이고 스키마 B는 필드 X가 BOOL 유형이라고 함), 다음 중 하나를 수행할 수 있습니다.
  • 데이터에 일부 입력 파일에 다른 스키마가 있고 다른 파일에는 유사한 스키마가 있는 경우 크롤러를 만들 때 호환되는 스키마를 결합할 수 있습니다. [크롤러 출력 구성(Configure the crawler's output)] 페이지의 [S3 데이터에 대한그룹화 동작(선택 사항)(Grouping behavior for S3 data(optional))] 에서 [각 S3 경로에 대한 단일 스키마 생성(Create a single schema for each S3 path)]을 선택합니다. 이 설정이 활성화되고 데이터가 호환되면 크롤러가 지정된 포함 경로에서 Amazon S3 객체를 평가할 때 특정 스키마의 유사성을 무시합니다. 자세한 내용은 각 Amazon S3 포함 경로에 대해 단일 스키마를 생성하는 방법을 참조하세요.
  • 입력 파일에 다른 Amazon S3 구조/경로가 있는 경우 크롤러는 여러 테이블을 생성합니다. 예를 들어 크롤러가 S3 경로 s3://doc-example-bucket/doc-example-key/doc-example-table을 다음과 유사한 파티션 구조로 크롤링한다고 가정합니다.
    s3://doc-example-bucket/doc-example-key/doc-example-table/dt=2020-08-20/doc-example-file1.csv
    s3://doc-example-bucket/doc-example-key/doc-example-table/dt=2020-08-21/dox-example-file2.csv
    s3://doc-example-bucket/doc-example-key/doc-example-table/dt=2020-08-22/doc-example-file3.csv
    s3://doc-example-bucket/doc-example-key/doc-example-table/dox-example-file4.csv
    s3:// doc-example-bucket/doc-example-key/doc-example-table/doc-example-file5.csv
    그런 다음 크롤러는 일관되지 않은 파티션 구조로 인해 여러 테이블을 만듭니다.
    이 문제를 방지하려면 다음을 수행할 수 있습니다.
    • 스키마를 수동 또는 프로그래밍 방식으로 일관되게 만듭니다. 주어진 예제에서 파티션 dt=xxxx-xx-xx 없이 s3 파일을 삭제하거나 doc-example-file4.csvdoc-example-file5.csv 파일에 대한 파티션을 추가할 수 있습니다.
    • exclude pattern을 사용하여 원치 않는 파일이나 폴더를 건너뜁니다.
  • CSV 데이터를 사용할 때는 헤더를 일관되게 사용해야 합니다. 파일 중 일부에는 헤더가 있고 다른 일부는 헤더가 없는 경우 크롤러는 여러 테이블을 생성합니다.

이 문서가 도움이 되었나요?


결제 또는 기술 지원이 필요하세요?