

# Delta Lake 메타데이터 동기화
<a name="delta-lake-tables-syncing-metadata"></a>

Athena를 사용하여 Delta Lake 테이블을 생성하는 경우 Athena에서는 스키마, 파티션 열 및 테이블 속성을 비롯한 테이블 메타데이터를 AWS Glue에 동기화합니다. 시간이 경과함에 따라 이 메타데이터와 트랜잭션 로그 내 기본 테이블 메타데이터의 동기화가 손실될 수 있습니다. 테이블을 최신 상태로 유지하기 위해 다음 옵션 중 하나를 선택할 수 있습니다.
+ Delta Lake 테이블에 대해 AWS Glue 크롤러를 사용합니다. 자세한 내용은 *AWS Big Data Blog*의 [Introducing native Delta Lake table support with AWS Glue crawlers](https://aws.amazon.com/blogs/big-data/introducing-native-delta-lake-table-support-with-aws-glue-crawlers/) 및 AWS Glue 개발자 안내서의 [Scheduling an AWS Glue crawler](https://docs.aws.amazon.com/glue/latest/dg/schedule-crawler.html)를 참조하세요.
+ Athena에서 테이블을 삭제하고 다시 생성합니다.
+ SDK, CLI 또는 AWS Glue 콘솔을 사용하여 AWS Glue에서 스키마를 수동으로 업데이트합니다.

다음 기능을 사용하려면 AWS Glue 스키마가 항상 트랜잭션 로그와 동일한 스키마를 보유해야 합니다.
+ Lake Formation
+ 보기
+ 행 및 열 필터

워크플로에 이 기능이 필요하지 않고 이러한 호환성을 유지 관리하고 싶지 않은 경우 Athena에서 `CREATE TABLE` DDL을 사용한 후 AWS Glue에서 Amazon S3 경로를 SerDe 파라미터로 추가하면 됩니다.

## Athena 및 AWS Glue 콘솔을 사용하여 Delta Lake 테이블 생성
<a name="delta-lake-tables-syncing-metadata-console"></a>

다음 절차에 따라 Athena 및 AWS Glue 콘솔을 사용하여 Delta Lake 테이블을 생성할 수 있습니다.

**Athena 및 AWS Glue 콘솔을 사용하여 Delta Lake 테이블을 생성하려면**

1. [https://console.aws.amazon.com/athena/](https://console.aws.amazon.com/athena/home)에서 Athena 콘솔을 엽니다.

1. Athena 쿼리 편집기에서 다음 DDL을 사용하여 Delta Lake 테이블을 생성합니다. 이 방법을 사용하는 경우 `TBLPROPERTIES`의 값이 `'table_type' = 'delta'`가 아닌 `'spark.sql.sources.provider' = 'delta'`여야 합니다.

   Apache Spark(Athena for Apache Spark) 또는 대부분의 다른 엔진을 사용하여 테이블을 생성하는 경우 이 동일한 스키마(열 이름이 `col`이고 유형이 `array<string>`인 단일 열)가 삽입됩니다.

   ```
   CREATE EXTERNAL TABLE
      [db_name.]table_name(col array<string>)
      LOCATION 's3://amzn-s3-demo-bucket/your-folder/'
      TBLPROPERTIES ('spark.sql.sources.provider' = 'delta')
   ```

1. [https://console.aws.amazon.com/glue/](https://console.aws.amazon.com/glue/)에서 AWS Glue 콘솔을 엽니다.

1. 탐색 창의 **데이터 카탈로그**에서 **테이블**을 선택합니다.

1. 테이블 목록에서 테이블에 대한 링크를 선택합니다.

1. 테이블 페이지에서 **작업**, **테이블 편집**을 선택합니다.

1. **Serde 파라미터** 섹션에서 값이 **s3://amzn-s3-demo-bucket/*your-folder*/**인 **path** 키를 추가합니다.

1. **저장**을 선택합니다.

## AWS CLI를 사용하여 Delta Lake 테이블 생성
<a name="delta-lake-tables-syncing-metadata-cli"></a>

AWS CLI를 사용하여 Delta Lake 테이블을 생성하려면 다음과 같은 명령을 입력합니다.

```
aws glue create-table --database-name dbname \
    --table-input '{"Name" : "tablename", "StorageDescriptor":{
            "Columns" : [
                {
                    "Name": "col",
                    "Type": "array<string>"
                }
            ],
            "Location" : "s3://amzn-s3-demo-bucket/<prefix>/",
            "SerdeInfo" : {
                "Parameters" : {
                    "serialization.format" : "1",
                    "path" : "s3://amzn-s3-demo-bucket/<prefix>/"
                }
            }
        },
        "PartitionKeys": [],
        "TableType": "EXTERNAL_TABLE",
        "Parameters": {
            "EXTERNAL": "TRUE",
            "spark.sql.sources.provider": "delta"
        }
    }'
```