Delta Lake メタデータを同期する - Amazon Athena

Delta Lake メタデータを同期する

Athena を使用して Delta Lake テーブルを作成する場合、Athena はスキーマ、パーティション列、およびテーブルプロパティなどのテーブルメタデータを含むテーブルメタデータを AWS Glue に同期します。時間が経過すると、このメタデータは、トランザクションログ内の基になるテーブルメタデータとの同期を失う可能性があります。テーブルを最新の状態に保つには、以下のいずれかのオプションを選択できます。

以下の機能を使用するには、AWS Glue スキーマがトランザクションログと常に同じスキーマである必要があることに注意してください。

  • Lake Formation

  • ビュー

  • 行フィルターと列フィルター

この機能がワークフローで必要なく、この互換性を維持しない場合は、Athena で CREATE TABLE DDL を使用し、AWS Glue で Amazon S3 パスを SerDe パラメータとして追加できます。

次の手順を使用して、Athena と AWS Glue コンソールで Delta Lake テーブルを作成できます。

Athena と AWS Glue コンソールを使用して Delta Lake テーブルを作成するには
  1. https://console.aws.amazon.com/athena/ で Athena コンソールを開きます。

  2. 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')
  3. https://console.aws.amazon.com/glue/ で AWS Glue コンソール を開きます。

  4. ナビゲーションペインで、[データカタログ][テーブル] を選択します。

  5. テーブルのリストで、目的のテーブルのリンクを選択します。

  6. テーブルのページで、[アクション][テーブルの編集] を選択します。

  7. [Serde パラメータ] セクションで、値 s3://amzn-s3-demo-bucket/your-folder/ を含むキー path を追加します。

  8. [Save] を選択します。

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