내용으로 건너뛰기

AWS Glue 크롤러는 스키마를 어떻게 탐지합니까?

4분 분량
0

AWS Glue 크롤러를 실행하면 크롤러가 비슷한 스키마를 사용하여 여러 테이블을 만듭니다. 크롤러가 스키마를 어떻게 탐지하는지 알고 싶습니다.

해결 방법

AWS Glue 크롤러를 실행하면 크롤러는 다음 단계를 완료합니다.

  1. 크롤러는 데이터를 분류합니다.
  2. 크롤러는 데이터를 테이블 또는 파티션으로 그룹화합니다.
  3. 크롤러는 AWS Glue Data Catalog에 메타데이터를 기록합니다.

크롤러가 수행하는 작업과 스키마를 탐지하는 방법을 이해하려면 다음 정보를 검토하십시오.

크롤러 정의

AWS Glue 크롤러를 정의할 때는 데이터 형식을 평가하여 스키마를 추론하는 사용자 지정 분류자를 하나 이상 선택할 수 있습니다. 크롤러가 실행되면 목록의 첫 번째 분류자를 사용해 데이터 저장소를 성공적으로 인식하여 테이블에 대한 스키마를 만듭니다. 크롤러를 정의하기 전에 사용자 지정 분류자를 정의해야 합니다. 크롤러가 실행되면 크롤러는 정의한 사용자 지정 분류자를 사용하여 데이터 저장소에서 일치하는 항목을 찾습니다. 각 분류자와 일치하는 항목은 확실성을 생성합니다. 분류자가 처리하는 동안 확실성=1.0을 반환하면 크롤러는 분류자가 올바른 스키마를 만들 수 있음을 100% 확신하는 것입니다. 이 경우 크롤러는 다른 분류자를 호출하지 않고 사용자 지정 분류자와 일치하는 분류자가 포함된 테이블을 만듭니다.

자세한 내용은 분류자 정의 및 관리를 참조하십시오.

크롤러의 스키마 탐지

첫 번째 크롤러를 실행하는 동안 크롤러는 스키마를 추론하기 위해 각 파일의 처음 1,000개 레코드 또는 첫 메가바이트를 읽습니다. 읽은 데이터의 양은 파일 형식과 유효한 레코드의 가용성에 따라 달라집니다. 예를 들어 입력 파일이 JSON 파일인 경우 크롤러는 파일의 처음 1MB를 읽고 스키마를 추론합니다. 크롤러가 파일의 처음 1MB 내에서 유효한 레코드를 읽으면 스키마를 추론합니다. 크롤러가 1MB 이후에 스키마를 추론할 수 없는 경우 1MB 단위로 최대 10MB의 파일을 계속 읽습니다. CSV 파일의 경우 크롤러는 처음 1,000개 레코드 또는 처음 1MB의 데이터 중 먼저 나오는 것을 읽습니다. Parquet 파일의 경우 크롤러는 파일에서 스키마를 직접 추론합니다. 크롤러는 모든 하위 폴더와 파일에서 추론한 스키마를 비교한 다음, 하나 이상의 테이블을 만듭니다. 크롤러는 테이블을 만들 때 다음 요소를 고려합니다.

  • 데이터의 형식, 압축 유형 및 포함된 경로가 동일한지 확인하는 데이터 호환성
  • 스키마가 파티션 임계값 및 다양한 스키마 수 측면에서 얼마나 유사한지 확인하는 스키마 유사성

크롤러가 스키마를 유사하다고 간주하려면 다음 조건을 충족해야 합니다.

  • 파티션 임계값이 0.7(70%)보다 높습니다.
  • 이 맥락에서 ‘클러스터’라고도 하는 다양한 스키마의 최대 수는 5개를 초과하지 않습니다.

크롤러는 폴더 수준에서 스키마를 추론하고 모든 폴더의 스키마를 비교합니다. 비교한 스키마가 70%보다 높은 파티션 임계값과 일치하면 스키마는 테이블의 파티션으로 표시됩니다. 일치하지 않는 경우 크롤러는 각 폴더에 대해 테이블을 만들어 테이블 수가 늘어납니다.

예제 시나리오

예제 1

다음 예에서 DOC-EXAMPLE-FOLDER1 폴더에는 10개 파일, 즉 SCH_A 스키마가 있는 파일 8개와 SCH_B가 있는 파일 2개가 있습니다.

파일이 다음 예와 비슷하다고 가정해 보겠습니다.

SHC_A:

{ "id": 1, "first_name": "John", "last_name": "Doe"}{ "id": 2, "first_name": "Li", "last_name": "Juan"}

SCH_B:

{"city":"Dublin","country":"Ireland"}{"city":
`"Paris","country":"France"}`When the crawler crawls the Amazon Simple Storage Service (Amazon S3) path **s3://DOC-EXAMPLE-FOLDER1**, the crawler creates one table. The table comprises columns of both schema **SCH\_A** and **SCH\_B**. This is because 80% of the files in the path belong to the **SCH\_A** schema, and 20% of the files belong to the **SCH\_B** schema. Therefore, the schema meets the partition threshold value. Also, the number of different schemas doesn't exceed the number of clusters, and the schema doesn't exceed the cluster size limit.

예제 2

다음 예에서 DOC-EXAMPLE-FOLDER2 폴더에는 10개 파일, 즉 SCH_A 스키마가 있는 파일 7개와 SCH_B 스키마가 있는 파일 3개가 있습니다.

크롤러가 Amazon S3 경로 s3://DOC-EXAMPLE-FOLDER2를 크롤링하면 각 파일에 대해 하나의 테이블을 만듭니다. 파일의 70%는 SCH_A 스키마에 속하고 30%는 SCH_B 스키마에 속하기 때문입니다. 이는 스키마가 파티션 임계값을 충족하지 않음을 의미합니다.

참고: Amazon CloudWatch에서 크롤러 로그를 확인하여 만들어진 테이블에 대한 정보를 얻을 수 있습니다.

크롤러 옵션

크롤러 동작을 사용자 지정할 때는 다음 옵션 중 하나를 선택할 수 있습니다.

  • 단일 스키마 만들기: 각 S3 경로에 대해 단일 스키마 만들기 옵션을 사용하여 스키마 유사성을 무시하고 단일 스키마를 만들도록 크롤러를 구성할 수 있습니다. 자세한 내용은 각 Amazon S3 포함 경로에 대한 단일 스키마 만들기를 참조하십시오.
    참고: 크롤러가 데이터 비호환성을 탐지한 경우에도 여전히 여러 테이블을 만듭니다.
  • 테이블 위치 지정: 테이블 수준 크롤러 옵션을 사용하여 테이블의 위치와 파티션을 만드는 방법을 지정할 수 있습니다. 자세한 내용은 테이블 위치 및 파티셔닝 수준 지정을 참조하십시오.

관련 정보

크롤러를 사용하여 Data Catalog 채우기

크롤러 동작 사용자 지정

AWS 공식업데이트됨 6달 전