Connessione al Catalogo dati usando l'endpoint AWS Glue Iceberg Rest
L'endpoint AWS Glue Iceberg Rest supporta le operazioni API specificate nella specifica di Apache Iceberg REST. Utilizzando un client Iceberg REST, è possibile collegare l'applicazione in esecuzione su un motore di analisi al catalogo REST ospitato nel Catalogo dati.
L'endpoint supporta entrambe le specifiche delle tabelle Apache Iceberg: v1 e v2, con l'impostazione predefinita su v2. Quando si utilizza la specifica della tabella Iceberg v1, occorre specificare v1 nella chiamata API. Usando l'operazione API, è possibile accedere alle tabelle Iceberg archiviate sia nello storage degli oggetti Amazon S3 che nello storage delle Tabelle Amazon S3.
Configurazione dell'endpoint
È possibile accedere al catalogo di AWS Glue Iceberg REST usando l'endpoint del servizio. Per l'endpoint specifico della regione, consulta la guida di riferimento agli endpoint del servizio AWS Glue. Ad esempio, quando ti connetti ad AWS Glue nella regione us-east-1, devi configurare la proprietà URI dell'endpoint come segue:
Endpoint : https://glue.us-east-1.amazonaws.com/icebergProprietà di configurazione aggiuntive: quando usi il client Iceberg per connettere un motore di analisi come Spark all'endpoint del servizio, devi specificare le seguenti proprietà di configurazione dell'applicazione:
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()
L'endpoint Iceberg AWS Glue https://glue. supporta le seguenti API di Iceberg REST:us-east-1.amazonaws.com/iceberg
-
GetConfig
-
ListNamespaces
-
CreateNamespace
-
LoadNamespaceMetadata
-
UpdateNamespaceProperties
-
DeleteNamespace
-
ListTables
-
CreateTable
-
LoadTable
-
TableExists
-
UpdateTable
-
DeleteTable
Parametri del percorso del catalogo e del prefisso
Le API del catalogo di Iceberg REST hanno un prefisso in formato libero negli URL di richiesta. Ad esempio, la chiamata API ListNamespaces usa il formato URL GET/v1/{prefix}/namespaces. Il prefisso AWS Glue segue sempre la struttura /catalogs/{catalog} per garantire che il percorso REST sia allineato alla gerarchia multi-catalogo di AWS Glue. Il parametro di percorso {catalog} può essere derivato in base alle seguenti regole:
| Modello di accesso |
Stile ID Catalogo Glue |
Stile del prefisso |
Esempio di ID catalogo predefinito |
Esempio di percorso REST |
|---|---|---|---|---|
|
Accedi al catalogo predefinito nell'account corrente |
non obbligatorio | : |
non applicabile |
GET /v1/catalogs/:/namespaces |
|
Accesso al catalogo predefinito in un account specifico |
accountID | accountID | 111122223333 | GET /v1/catalogs/111122223333/namespaces |
|
Accesso a un catalogo annidato nell'account corrente |
catalog1/catalog2 |
catalog1/catalog2 |
rmscatalog1:db1 |
GET /v1/catalogs/rmscatalog1:db1/namespaces |
|
Accesso a un catalogo annidato in uno specifico account |
accountId:catalog1/catalog2 |
accountId:catalog1/catalog2 |
123456789012/rmscatalog1:db1 |
GET /v1/catalogs/123456789012:rmscatalog1:db1/namespaces |
Questa mappatura tra ID catalogo e prefisso è richiesta solo quando si richiamano direttamente le API REST. Quando si lavora con le API del catalogo AWS Glue Iceberg REST tramite un motore, è necessario specificare l'ID del catalogo AWS Glue nel parametro warehouse per l'impostazione dell'API del catalogo Iceberg REST o nel parametro glue.id per l'impostazione dell'API delle estensioni AWS Glue. Scopri come utilizzarlo ad esempio con EMR Spark in Utilizza un cluster Iceberg con Spark.
Parametro del percorso namespace
I namespace nei percorsi delle API del catalogo di Iceberg REST possono avere più livelli. Tuttavia, AWS Glue supporta solo namespace a livello singolo. Per accedere a un namespace in una gerarchia di cataloghi multilivello, è possibile connettersi a un catalogo multilivello sopra il namespace per fare riferimento al namespace. Ciò consente a qualsiasi motore di query che supporti la notazione in tre parti catalog.namespace.table di accedere agli oggetti nella gerarchia del catalogo multilivello di AWS Glue senza problemi di compatibilità rispetto all'utilizzo del namespace multilivello.