

# 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 開発者ガイド」の「[AWS Glue クローラーのスケジュール](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) または他のほとんどのエンジンを使用してテーブルを作成すると、(タイプ `array<string>` の `col` という名前の単一の列を含む) この同じスキーマが挿入されることに注意してください。

   ```
   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"
        }
    }'
```