Zugriff auf den Datenkatalog - AWS Glue

Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.

Zugriff auf den Datenkatalog

Sie können den AWS Glue Data Catalog (Datenkatalog) verwenden, um Ihre Daten zu entdecken und zu verstehen. Der Datenkatalog bietet eine konsistente Methode zur Verwaltung von Schemadefinitionen, Datentypen, Speicherorten und anderen Metadaten. Sie können mit den folgenden Methoden auf den Datenkatalog zugreifen:

  • AWS Glue Konsole — Sie können über die AWS Glue Konsole, eine webbasierte Benutzeroberfläche, auf den Datenkatalog zugreifen und ihn verwalten. Die Konsole ermöglicht das Durchsuchen und Suchen nach Datenbanken, Tabellen und den zugehörigen Metadaten sowie das Erstellen, Aktualisieren und Löschen von Metadatendefinitionen.

  • AWS-Glue-Crawler — Crawler sind Programme, die Ihre Datenquellen automatisch scannen und den Datenkatalog mit Metadaten füllen. Sie können Crawler erstellen und ausführen, um Daten aus verschiedenen Quellen wie Amazon S3, AmazonRDS, Amazon DynamoDB und JDBC -kompatiblen relationalen Datenbanken wie My SQL und Postgre sowie aus mehreren AWS Nichtquellen wie Snowflake und SQL Google zu entdecken und zu katalogisieren. Amazon CloudWatch BigQuery

  • AWS Glue APIs— Sie können programmgesteuert auf den Datenkatalog zugreifen, indem Sie AWS Glue APIs Diese APIs ermöglichen Ihnen die programmgesteuerte Interaktion mit dem Datenkatalog und ermöglichen so die Automatisierung und Integration mit anderen Anwendungen und Diensten.

  • AWS Command Line Interface (AWS CLI) — Sie können den verwenden AWS CLI , um über die Befehlszeile auf den Datenkatalog zuzugreifen und ihn zu verwalten. Das CLI bietet Befehle zum Erstellen, Aktualisieren und Löschen von Metadatendefinitionen sowie zum Abfragen und Abrufen von Metadateninformationen.

  • Integration mit anderen AWS Diensten — Der Datenkatalog lässt sich in verschiedene andere AWS Dienste integrieren, sodass Sie auf die im Katalog gespeicherten Metadaten zugreifen und diese nutzen können. Sie können Amazon Athena beispielsweise verwenden, um Datenquellen mithilfe der Metadaten im Datenkatalog abzufragen und den Datenzugriff und die Datenverwaltung für die Datenkatalogressourcen AWS Lake Formation zu verwalten.

Über den AWS Glue REST Iceberg-Endpunkt eine Verbindung zum Datenkatalog herstellen

AWS Glue Der REST Iceberg-Endpunkt unterstützt API Operationen, die in der Apache REST Iceberg-Spezifikation spezifiziert sind. Mithilfe eines REST Iceberg-Clients können Sie Ihre Anwendung, die auf einer Analytics-Engine ausgeführt wird, mit dem im REST Datenkatalog gehosteten Katalog verbinden.

Der Endpunkt unterstützt beide Apache Iceberg-Tabellenspezifikationen — v1 und v2, wobei standardmäßig v2 verwendet wird. Wenn Sie die Iceberg-Tabelle v1-Spezifikation verwenden, müssen Sie im Aufruf v1 angeben. API Mit diesem API Vorgang können Sie auf Iceberg-Tabellen zugreifen, die sowohl im Amazon S3 S3-Objektspeicher als auch im Amazon S3 S3-Tabellenspeicher gespeichert sind.

Endpunktkonfiguration

Sie können über den Service-Endpunkt auf den AWS Glue REST Iceberg-Katalog zugreifen. Informationen zum regionsspezifischen AWS Glue Endpunkt finden Sie im Referenzhandbuch für Service-Endpunkte. Wenn Sie beispielsweise eine Verbindung mit der AWS Glue Region us-east-1 herstellen, müssen Sie die URI Endpunkteigenschaft wie folgt konfigurieren:

Endpoint : https://glue.us-east-1.amazonaws.com/iceberg

Zusä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 Eigenschaften für die Anwendungskonfiguration 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()
     

Über den AWS Glue REST Iceberg-Erweiterungsendpunkt eine Verbindung zum Datenkatalog herstellen

AWS Glue Der REST Iceberg-Erweiterungsendpunkt bietet zusätzliche FunktionenAPIs, die in der Apache REST Iceberg-Spezifikation nicht enthalten sind, und bietet serverseitige Scanplanungsfunktionen. Diese zusätzlichen APIs werden verwendet, wenn Sie auf Tabellen zugreifen, die im verwalteten Amazon Redshift Redshift-Speicher gespeichert sind. Auf den Endpunkt kann von einer Anwendung aus zugegriffen werden, die Apache Iceberg-Erweiterungen AWS Glue Data Catalog verwendet.

Endpunktkonfiguration — Auf einen Katalog mit Tabellen im verwalteten Redshift-Speicher kann über den Service-Endpunkt zugegriffen werden. Informationen zum regionsspezifischen AWS Glue Endpunkt finden Sie im Referenzhandbuch für Service-Endgeräte. Wenn Sie beispielsweise eine Verbindung mit der AWS Glue Region us-east-1 herstellen, müssen Sie die URI Endpunkteigenschaft wie folgt konfigurieren:

Endpoint : https://glue.us-east-1.amazonaws.com/extensions
catalog_name = "myredshiftcatalog"
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", "glue") \
    .config(f"spark.sql.catalog.{catalog_name}.glue.id", "{123456789012}:redshiftnamespacecatalog/redshiftdb") \
    .config("spark.sql.extensions","org.apache.iceberg.spark.extensions.IcebergSparkSessionExtensions") \
    .getOrCreate()
    

Authentifizierung und Autorisierung des Zugriffs auf Dienstendpunkte AWS Glue

APIAnfragen an die AWS Glue Data Catalog Endpunkte werden mit AWS Signature Version 4 (Sigv4) authentifiziert. Weitere Informationen zu AWS Sigv4 finden Sie im Abschnitt Signature Version 4 für API Anfragen. AWS

Beim Zugriff auf den AWS Glue Dienstendpunkt und die AWS Glue Metadaten nimmt die Anwendung eine IAM Rolle ein, die eine glue:getCatalog IAM Aktion erfordert.

RESTBetrieb RESTPfad AWS Glue IAMAktion CloudTrail EventName Genehmigungen für Lake Formation
GetConfig GET/config GetCatalog

GetConfig

Nicht erforderlich.
ListNamespaces GET/Namespaces GetDatabases GetDatabases ALL, DESCRIBE, SELECT
CreateNamespace POST/Namespaces CreateDatabase CreateDatabase ALL, CREATE_DATABASE
LoadNamespaceMetadata GET/namespaces/ {ns} GetDatabase GetDatabase ALL, DESCRIBE, SELECT
UpdateProperties POST /namespaces/{ns}/properties UpdateDatabase UpdateDatabase ALL, ALTER
DeleteNamespace DELETE/namespace/ {ns} DeleteDatabase DeleteDatabase ALL, DROP
ListTables GET /namespaces/{ns}/tables GetTables GetTables ALL, SELECT, DESCRIBE
CreateTable POST /namespaces/{ns}/tables CreateTable CreateTable ALL, CREATE_TABLE
LoadTable GET /namespaces/{ns}/tables/{tbl} GetTable GetTable ALL, SELECT, DESCRIBE
TableExists HEAD /namespaces/{ns}/tables/{tbl} GetTable GetTable ALL, SELECT, DESCRIBE
UpdateTable POST /namespaces/{ns}/tables/{tbl} UpdateTable UpdateTable ALL, ALTER
DeleteTable DELETE /namespaces/{ns}/tables/{tbl} DeleteTable DeleteTable ALL, DROP

Sie könnenIAM, AWS Lake Formation, oder Lake Formation Formation-Hybridmodus-Berechtigungen verwenden, um den Zugriff auf den Standarddatenkatalog und seine Objekte zu verwalten.

In Verbundkatalogen in der Lake Formation AWS Glue Data Catalog sind Datenstandorte registriert. Lake Formation ist in Data Catalog integriert und bietet datenbankähnliche Berechtigungen zur Verwaltung des Benutzerzugriffs auf Katalogobjekte. In Lake Formation müssen Berechtigungen für den IAM Benutzer oder die Rolle eingerichtet werden, die zum Erstellen, Einfügen oder Löschen von Daten verwendet werden. Die Berechtigungen sind dieselben wie für bestehende AWS Glue Tabellen:

  • CREATE_ CATALOG — Erforderlich, um Kataloge zu erstellen

  • CREATE_ DATABASE — Erforderlich, um Datenbanken zu erstellen

  • CREATE_ TABLE — Erforderlich, um Tabellen zu erstellen

  • DELETE— Erforderlich, um Daten aus einer Tabelle zu löschen

  • DESCRIBE— Erforderlich, um Metadaten zu lesen

  • DROP— Erforderlich, um eine Tabelle oder Datenbank zu löschen/zu löschen

  • INSERT: Wird benötigt, wenn der Principal Daten in eine Tabelle einfügen muss

  • SELECT: Wird benötigt, wenn der Principal Daten aus einer Tabelle auswählen muss

Weitere Informationen finden Sie in der Berechtigungsreferenz für Lake Formation im AWS Lake Formation Entwicklerhandbuch.

Von einer eigenständigen Spark-Anwendung aus eine Verbindung zum Datenkatalog herstellen

Sie können von einer Standardanwendung aus über einen Apache Iceberg-Konnektor eine Verbindung zum Datenkatalog herstellen.

  1. Erstellen Sie eine IAM Rolle für die Spark-Anwendung.

  2. Connect Sie mithilfe des AWS Glue Iceberg-Connectors eine Verbindung zum Iceberg Rest-Endpunkt her.

    # configure your application. Refer to https://docs.aws.amazon.com/cli/latest/userguide/cli-configure-envvars.html for best practices on configuring environment variables. export AWS_ACCESS_KEY_ID=$(aws configure get appUser.aws_access_key_id) export AWS_SECRET_ACCESS_KEY=$(aws configure get appUser.aws_secret_access_key) export AWS_SESSION_TOKEN=$(aws configure get appUser.aws_secret_token) export AWS_REGION=us-east-1 export REGION=us-east-1 export AWS_ACCOUNT_ID = {specify your aws account id here} ~/spark-3.5.3-bin-hadoop3/bin/spark-shell \ --packages org.apache.iceberg:iceberg-spark-runtime-3.4_2.12:1.6.0 \ --conf "spark.sql.extensions=org.apache.iceberg.spark.extensions.IcebergSparkSessionExtensions" \ --conf "spark.sql.defaultCatalog=spark_catalog" \ --conf "spark.sql.catalog.spark_catalog=org.apache.iceberg.spark.SparkCatalog" \ --conf "spark.sql.catalog.spark_catalog.type=rest" \ --conf "spark.sql.catalog.spark_catalog.uri=https://glue.us-east-1.amazonaws.com/iceberg" \ --conf "spark.sql.catalog.spark_catalog.warehouse = {AWS_ACCOUNT_ID}" \ --conf "spark.sql.catalog.spark_catalog.rest.sigv4-enabled=true" \ --conf "spark.sql.catalog.spark_catalog.rest.signing-name=glue" \ --conf "spark.sql.catalog.spark_catalog.rest.signing-region=us-east-1" \ --conf "spark.sql.catalog.spark_catalog.io-impl=org.apache.iceberg.aws.s3.S3FileIO" \ --conf "spark.hadoop.fs.s3a.aws.credentials.provider=org.apache.hadoop.fs.s3a.SimpleAWSCredentialProvider"
  3. Daten im Datenkatalog abfragen.

    spark.sql("create database myicebergdb").show()
    spark.sql("""CREATE TABLE myicebergdb.mytbl (name string) USING iceberg location 's3://bucket_name/mytbl'""")
    spark.sql("insert into myicebergdb.mytbl values('demo') ").show()
           

Datenzuordnung zwischen Amazon Redshift und Apache Iceberg

Redshift und Iceberg unterstützen verschiedene Datentypen. In der folgenden Kompatibilitätsmatrix werden die Unterstützung und die Einschränkungen bei der Zuordnung von Daten zwischen diesen beiden Datensystemen beschrieben. Weitere Informationen zu den unterstützten Datentypen in den jeweiligen Datensystemen finden Sie in den Amazon Redshift Redshift-Datentypen und den Apache Iceberg-Tabellenspezifikationen.

Redshift-Datentyp Aliasnamen Iceberg-Datentyp
SMALLINT INT2 int
INTEGER INT, INT4 int
BIGINT INT8 long
DECIMAL NUMERIC Dezimalwert
REAL FLOAT4 float
REAL FLOAT4 float
DOUBLE PRECISION FLOAT8, FLOAT double
CHAR CHARACTER, NCHAR Zeichenfolge
VARCHAR CHARACTER VARYING, NVARCHAR string
BPCHAR string
TEXT string
DATE date
TIME TIME WITHOUT TIMEZONE time
TIME TIME WITH TIMEZONE Nicht unterstützt
TIMESTAMP TIMESTAMP WITHOUT TIMEZONE TIMESTAMP
TIMESTAMPZ TIMESTAMP WITH TIMEZONE TIMESTAMPZ
INTERVALYEARZU MONTH Nicht unterstützt
INTERVALDAYZU SECOND Nicht unterstützt
BOOLEAN BOOL bool
HLLSKETCH Nicht unterstützt
SUPER Nicht unterstützt
VARBYTE VARBINARY, BINARY VARYING Binary
GEOMETRY Nicht unterstützt
GEOGRAPHY Nicht unterstützt

Überlegungen und Einschränkungen bei der Verwendung von AWS Glue Iceberg Catalog REST APIs

Im Folgenden werden die Überlegungen und Einschränkungen bei der Verwendung des Betriebsverhaltens der Apache Iceberg REST Catalog Data Definition Language (DDL) beschrieben.

Überlegungen
  • DeleteTable APIVerhalten — DeleteTable API unterstützt eine Bereinigungsoption. Wenn die Option Löschen auf eingestellt isttrue, werden die Tabellendaten gelöscht, andernfalls werden die Daten nicht gelöscht. Bei Tabellen in Amazon S3 werden durch den Vorgang keine Tabellendaten gelöscht. Der Vorgang schlägt fehl, wenn die Tabelle in Amazon S3 und gespeichert istpurge = TRUE,.

    Bei Tabellen, die im verwalteten Amazon Redshift-Speicher gespeichert sind, löscht der Vorgang Tabellendaten, ähnlich dem DROP TABLE Verhalten in Amazon Redshift. Der Vorgang schlägt fehl, wenn die Tabelle in Amazon Redshift und purge = FALSE gespeichert ist.

  • CreateTable APIVerhalten — Der CreateTable API Vorgang unterstützt die Option state-create = TRUE nicht.

  • RenameTableAPIVerhalten — Der RenameTable Vorgang wird in Tabellen in Amazon Redshift unterstützt, aber nicht in Amazon S3.

  • DDLOperationen für Namespaces und Tabellen in Amazon Redshift — Erstellungs-, Aktualisierungs- und Löschvorgänge für Namespaces und Tabellen in Amazon Redshift sind asynchrone Operationen, da sie davon abhängen, wann die von Amazon Redshift verwaltete Arbeitsgruppe verfügbar ist und ob eine widersprüchliche DML Transaktion im Gange ist und der Vorgang auf die Sperre warten DDL und dann versuchen muss, die Änderungen zu übernehmen.

    Während eines Erstellungs-, Aktualisierungs- oder Löschvorgangs gibt der Endpunkt eine 202-Antwort mit der folgenden Nutzlast zurück.

    {
      "transaction-context": "operation/resource", 
      "transaction-id": "data-api-request-id:crypto-hash-signature(operation, resource, data-api-uuid)"
    }        

    Beispielsweise liefert der Endpunkt die folgende Antwort für einen UpdateTable Vorgang:

    {
      "transaction-context": "UpdateTable/arn:aws:glue:us-east-1:123456789012:table/123456789012/cat1/db1/tbl1", 
      "transaction-id": "b0033764-20df-4679-905d-71f20a0cdbe7:ca8a95d54158793204f1f39b4971d2a7"
    }        

    Um den Fortschritt dieser Transaktion zu verfolgen CheckTransactionStatusAPI, können Sie Folgendes verwenden:

    POST /transactions/status
    
    Request:
    {
      "transaction-context": "UpdateTable/arn:aws:glue:us-east-1:123456789012:table/123456789012/cat1/db1/tbl1", 
      "transaction-id": "transaction-id": "b0033764-20df-4679-905d-71f20a0cdbe7:ca8a95d54158793204f1f39b4971d2a7"
    }
    
    Response:
    {
       "status": "IN_PRORESS|SUCCEEDED|FAILED|CANCELED",
      "error": "message" // if failed
    }
            
Einschränkungen
  • Ansichten APIs in der Apache REST Iceberg-Spezifikation werden im AWS Glue REST Iceberg-Katalog nicht unterstützt.