本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
同步 Delta Lake 中繼資料
AWS Glue 如果您使用 Athena 建立 Delta Lake 資料表,Athena 會將資料表中繼資料,包括結構描述、分割區資料欄和資料表屬性同步至 。隨著時間流逝,此中繼資料可能會遺失與交易日誌中基礎資料表中繼資料的同步處理。要讓資料表保持最新,您可以選擇下列其中一個選項:
-
使用 Delta Lake 資料表的 AWS Glue 爬蟲程式。如需詳細資訊,請參閱《 AWS Glue 開發人員指南》中的在AWS 大數據部落格中使用AWS Glue 爬蟲程式介紹原生 Delta Lake 資料表支援
, AWS Glue 以及排程爬蟲程式。 -
在 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 資料表。
使用 Athena 和 AWS Glue 主控台建立 Delta Lake 資料表
前往 https://console.aws.amazon.com/athena/
開啟 Athena 主控台。 -
在 Athena 查詢編輯器中,使用下列 DDL 建立您的 Delta Lake 資料表。請注意,使用此方法時,
TBLPROPERTIES
的值必須是'spark.sql.sources.provider' = 'delta'
而不是'table_type' = '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') 在 https://https://console.aws.amazon.com/glue/
開啟 AWS Glue 主控台。 -
在導覽窗格中,選擇資料目錄、資料表。
-
在資料表清單中,選擇資料表的連結。
-
在資料表的頁面上,選擇動作、編輯資料表。
-
在 Serde 參數區段中,新增索引鍵
path
與值s3://amzn-s3-demo-bucket/
。your-folder
/ -
選擇 Save (儲存)。
若要使用 建立 Delta Lake 資料表 AWS CLI,請輸入如下所示的命令。
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" } }'