使用 AWS Glue Iceberg REST 端點連線至 Data Catalog
AWS Glue 的 Iceberg REST 端點支援 Apache Iceberg REST 規格中指定的 API 操作。使用 Iceberg REST 用戶端,您可以將在分析引擎上執行的應用程式連線到 Data Catalog 中託管的 REST 型錄。
端點同時支援 Apache Iceberg 資料表規格 – v1 和 v2,預設為 v2。使用 Iceberg 資料表 v1 規格時,您必須在 API 呼叫中指定 v1。使用 API 操作,您可以存取儲存在 Amazon S3 物件儲存體和 Amazon S3 資料表儲存體中的 Iceberg 資料表。
端點組態
您可以使用服務端點存取 AWS Glue Iceberg REST 型錄。如需區域特定的端點,請參閱 AWS Glue 服務端點參考指南。例如,在 us-east-1 區域中連線至 AWS Glue 時,您需要設定端點 URI 屬性,如下所示:
Endpoint : https://glue.us-east-1.amazonaws.com/iceberg其他組態屬性 – 使用 Iceberg 用戶端將 Spark 等分析引擎連線至服務端點時,您必須指定下列應用程式組態屬性:
catalog_name ="mydatacatalog"aws_account_id ="123456789012"aws_region = "us-east-1" spark = SparkSession.builder \ ... \ .config("spark.sql.defaultCatalog", catalog_name) \ .config(f"spark.sql.catalog.{catalog_name}", "org.apache.iceberg.spark.SparkCatalog") \ .config(f"spark.sql.catalog.{catalog_name}.type", "rest") \ .config(f"spark.sql.catalog.{catalog_name}.uri", "https://glue.{aws_region}.amazonaws.com/iceberg") \ .config(f"spark.sql.catalog.{catalog_name}.warehouse", "{aws_account_id}") \ .config(f"spark.sql.catalog.{catalog_name}.rest.sigv4-enabled", "true") \ .config(f"spark.sql.catalog.{catalog_name}.rest.signing-name", "glue") \ .config("spark.sql.extensions","org.apache.iceberg.spark.extensions.IcebergSparkSessionExtensions") \ .getOrCreate()
AWS Glue Iceberg 端點 https://glue. 支援下列 Iceberg REST API:us-east-1.amazonaws.com/iceberg
-
GetConfig
-
ListNamespaces
-
CreateNamespace
-
LoadNamespaceMetadata
-
UpdateNamespaceProperties
-
DeleteNamespace
-
ListTables
-
CreateTable
-
LoadTable
-
TableExists
-
UpdateTable
-
DeleteTable
字首和型錄路徑參數
Iceberg REST 型錄 API 在其請求 URL 中具有自由格式字首。例如,ListNamespaces API 呼叫使用 GET/v1/{prefix}/namespaces URL 格式。AWS Glue 字首一律遵循 /catalogs/{catalog} 結構,以確保 REST 路徑符合 AWS Glue 多型錄階層。可以根據下列規則衍生 {catalog} 路徑參數:
| 存取模式 |
Glue 型錄 ID 樣式 |
字首樣式 |
預設型錄 ID 範例 |
範例 REST 路由 |
|---|---|---|---|---|
|
存取目前帳戶中的預設型錄 |
非必要 | : |
不適用 |
GET /v1/catalogs/:/namespaces |
|
存取特定帳戶中的預設型錄 |
accountID | accountID | 111122223333 | GET /v1/catalogs/111122223333/namespaces |
|
存取目前帳戶中的巢狀型錄 |
catalog1/catalog2 |
catalog1/catalog2 |
rmscatalog1:db1 |
GET /v1/catalogs/rmscatalog1:db1/namespaces |
|
存取特定帳戶中的巢狀型錄 |
accountId:catalog1/catalog2 |
accountId:catalog1/catalog2 |
123456789012/rmscatalog1:db1 |
GET /v1/catalogs/123456789012:rmscatalog1:db1/namespaces |
只有在您直接呼叫 REST API 時,才需要此型錄 ID 至字首映射。當您透過引擎使用 AWS Glue Iceberg REST 型錄 API 時,您需要在 Iceberg REST 型錄 API 設定的 warehouse 參數中或在 AWS Glue 延伸模組 API 設定的 glue.id 參數中指定 AWS Glue 型錄 ID。例如,請參閱將 Iceberg 叢集與 Spark 搭配使用,以了解如何將其與 EMR Spark 搭配使用。
命名空間路徑參數
Iceberg REST 型錄 API 路徑中的命名空間可以具有多個層級。但是, AWS Glue 僅支援單一層級命名空間。若要存取多層型錄階層中的命名空間,您可以連線到命名空間上方的多層型錄,以參考命名空間。與使用多層命名空間相比,這可讓任何支援 catalog.namespace.table 三部分表示法的查詢引擎存取 AWS Glue 的多層型錄層次結構中的物件,而不會出現相容性問題。