

# 각 Amazon S3 포함 경로에 대해 단일 스키마 생성
<a name="crawler-grouping-policy"></a>

기본적으로 크롤러가 Amazon S3에 저장된 데이터용 테이블을 정의하면 데이터 호환성과 스키마 유사성을 모두 고려합니다. 고려되는 데이터 호환성 요인에는 데이터가 동일 포맷(예: JSON), 동일 압축 포맷(예: GZIP), Amazon S3 경로의 구조 및 기타 데이터 속성인지 여부가 포함됩니다. 스키마 유사성은 개별 Amazon S3 객체의 스키마가 얼마나 근접하게 유사한지를 측정합니다.

이 옵션의 이해를 돕기 위해 포함 경로가 `s3://amzn-s3-demo-bucket/table1/`인 크롤러를 정의한다고 가정해 보겠습니다. 이 크롤러는 실행 시 다음과 같은 특성을 가진 JSON 파일 두 개를 찾습니다.
+ **파일 1** – `S3://amzn-s3-demo-bucket/table1/year=2017/data1.json`
+ *파일 내용* – `{“A”: 1, “B”: 2}`
+ *스키마* – `A:int, B:int`
+ **파일 2** – `S3://amzn-s3-demo-bucket/table1/year=2018/data2.json`
+ *파일 내용* – `{“C”: 3, “D”: 4}`
+ *스키마* – `C: int, D: int`

스키마가 충분히 비슷하지 않으므로 기본적으로 크롤러가 `year_2017` 및 `year_2018`이라는 두 테이블을 생성합니다. 하지만 **Create a single schema for each S3 path(각 S3 경로에 대해 단일 스키마 생성)** 옵션을 선택했으며 데이터가 호환되는 경우, 크롤러가 한 개 테이블을 생성합니다. 이 테이블에는 `A:int,B:int,C:int,D:int` 및 `partitionKey` `year:string`이라는 스키마가 있습니다.

------
#### [ AWS Management Console ]

1. AWS Management Console에 로그인하여 [https://console.aws.amazon.com/glue/](https://console.aws.amazon.com/glue/)에서 AWS Glue 콘솔을 엽니다.

1. **데이터 카탈로그**에서 **크롤러**를 선택합니다.

1. 새 크롤러를 구성하는 경우 **출력 및 예약**의 고급 옵션에서 **각 S3 경로에 대해 단일 스키마 생성** 옵션을 선택합니다.

------
#### [ AWS CLI ]

가능하면 공통 테이블 정의에 호환 스키마를 결합(`CombineCompatibleSchemas`)하도록 크롤러를 구성할 수 있습니다. 이 옵션을 사용하는 경우 크롤러가 데이터 호환성을 고려하지만, 지정된 포함 경로에서 Amazon S3 객체를 평가할 때 특정 스키마의 유사성을 무시합니다.

AWS CLI를 사용하여 크롤러를 구성할 때는 다음 구성 옵션을 설정합니다.

```
aws glue update-crawler \
   --name myCrawler \
   --configuration '{"Version": 1.0, "Grouping": {"TableGroupingPolicy": "CombineCompatibleSchemas" }}'
```

------
#### [ API ]

API를 사용하여 크롤러를 구성할 때는 다음 구성 옵션을 설정합니다.

 예를 들어, 크롤러 API의 다음 JSON 객체를 나타내는 문자열로 `Configuration` 필드를 설정합니다.

```
{
   "Version": 1.0,
   "Grouping": {
      "TableGroupingPolicy": "CombineCompatibleSchemas" }
}
```

------