Herstellen einer Verbindung zum Datenkatalog mit dem AWS Glue-Iceberg-REST-Endpunkt
Der Iceberg-REST-Endpunkt von AWS Glue unterstützt API-Operationen, die in der Apache-Iceberg-REST-Spezifikation spezifiziert sind. Mit einem Iceberg-REST-Client können Sie Ihre auf einer Analyse-Engine ausgeführte Anwendung mit dem im Datenkatalog gehosteten REST-Katalog verbinden.
Der Endpunkt unterstützt beide Apache-Iceberg-Tabellenspezifikationen – v1 und v2, wobei standardmäßig v2 verwendet wird. Wenn Sie die Iceberg-Tabellenspezifikation v1 verwenden, müssen Sie v1 im API-Aufruf angeben. Mit der API-Operation können Sie auf Iceberg-Tabellen zugreifen, die sowohl im Amazon-S3-Objektspeicher als auch im Amazon-S3-Tables-Speicher gespeichert sind.
Endpunktkonfiguration
Sie können über den Service-Endpunkt auf den AWS Glue-Iceberg-REST-Katalog zugreifen. Die regionsspezifischen Endpunkte finden Sie im Referenzhandbuch zu den AWS Glue-Service-Endpunkten. Wenn Sie beispielsweise eine Verbindung zu AWS Glue in der Region us-east-1 herstellen, müssen Sie die Eigenschaft „Endpunkt-URI“ wie folgt konfigurieren:
Endpoint : https://glue.us-east-1.amazonaws.com/icebergZusätzliche Konfigurationseigenschaften: Wenn Sie den Iceberg-Client verwenden, um eine Analyse-Engine wie Spark mit dem Service-Endpunkt zu verbinden, müssen Sie die folgenden Anwendungskonfigurationseigenschaften angeben:
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()
Der AWS Glue-Iceberg-Endpunkt https://glue. unterstützt die folgenden Iceberg-REST-APIs:us-east-1.amazonaws.com/iceberg
-
GetConfig
-
ListNamespaces
-
CreateNamespace
-
LoadNamespaceMetadata
-
UpdateNamespaceProperties
-
DeleteNamespace
-
ListTables
-
CreateTable
-
LoadTable
-
TableExists
-
UpdateTable
-
DeleteTable
Präfix- und Katalogpfadparameter
Iceberg-REST-Katalog-APIs haben ein frei wählbares Präfix in ihren Anfrage-URLs. Beispielsweise verwendet der API-Aufruf ListNamespaces das URL-Format GET/v1/{prefix}/namespaces. Das Präfix AWS Glue folgt immer der Struktur /catalogs/{catalog}, um sicherzustellen, dass der REST-Pfad der AWS Glue-Hierarchie mit mehreren Katalogen entspricht. Der {catalog}-Pfadparameter kann auf der Grundlage der folgenden Regeln abgeleitet werden:
| Zugriffsmuster |
Glue-Katalog-ID-Stil |
Präfix-Stil |
Beispiel für eine Standard-Katalog-ID |
Beispiel für eine REST-Route |
|---|---|---|---|---|
|
Zugriff auf den Standardkatalog im aktuellen Konto |
Nicht erforderlich | : |
n.v. |
GET /v1/catalogs/:/namespaces |
|
Zugriff auf den Standardkatalog in einem bestimmten Konto |
accountID | accountID | 111122223333 | GET /v1/catalogs/111122223333/namespaces |
|
Zugriff auf einen verschachtelten Katalog im aktuellen Konto |
catalog1/catalog2 |
catalog1/catalog2 |
rmscatalog1:db1 |
GET /v1/catalogs/rmscatalog1:db1/namespaces |
|
Zugriff auf einen verschachtelten Katalog in einem bestimmten Konto |
accountId:catalog1/catalog2 |
accountId:catalog1/catalog2 |
123456789012/rmscatalog1:db1 |
GET /v1/catalogs/123456789012:rmscatalog1:db1/namespaces |
Diese Zuordnung von Katalog-ID zu Präfix ist nur erforderlich, wenn Sie die REST-APIs direkt aufrufen. Wenn Sie mit den AWS Glue-Iceberg-REST-Katalog-APIs über eine Engine arbeiten, müssen Sie die AWS Glue-Katalog-ID im warehouse-Parameter für Ihre Iceberg-REST-Katalog-API-Einstellung oder im glue.id-Parameter für Ihre AWS Glue-Erweiterungs-API-Einstellung angeben. Informationen zur Verwendung mit EMR Spark finden Sie unter Verwenden Sie einen Iceberg-Cluster mit Spark.
Namespace-Pfadparameter
Namespaces im Pfad der Iceberg REST-Katalog-APIs können mehrere Ebenen haben. AWS Glue unterstützt jedoch nur einstufige Namespaces. Um auf einen Namespace in einer mehrstufigen Kataloghierarchie zuzugreifen, können Sie eine Verbindung zu einem übergeordneten mehrstufigen Katalog herstellen, um auf den Namespace zu verweisen. Dadurch kann jede Abfrage-Engine, die die dreiteilige Notation von catalog.namespace.table unterstützt, auf Objekte in der mehrstufigen Kataloghierarchie von AWS Glue zugreifen, ohne dass es zu Kompatibilitätsproblemen im Vergleich zur Verwendung des mehrstufigen Namespace kommt.