Accesso al catalogo dati - AWS Glue

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

Accesso al catalogo dati

Puoi utilizzare AWS Glue Data Catalog (Data Catalog) per scoprire e comprendere i tuoi dati. Data Catalog offre un modo coerente per mantenere le definizioni degli schemi, i tipi di dati, le posizioni e altri metadati. È possibile accedere al Data Catalog utilizzando i seguenti metodi:

  • AWS Glue console: puoi accedere e gestire il Data Catalog tramite la AWS Glue console, un'interfaccia utente basata sul Web. La console consente di sfogliare e cercare database, tabelle e i metadati associati, nonché di creare, aggiornare ed eliminare definizioni di metadati.

  • Crawler di AWS Glue — I crawler sono programmi che scansionano automaticamente le fonti di dati e popolano il Data Catalog con metadati. Puoi creare ed eseguire crawler per scoprire e catalogare dati da varie fonti come Amazon S3, Amazon, RDS Amazon DynamoDB e database relazionali conformi SQL come My e PostgreJDBC, nonché da diverse fonti non come Snowflake SQL e Google. Amazon CloudWatchAWS BigQuery

  • AWS Glue APIs— È possibile accedere al AWS Glue APIs Data Catalog in modo programmatico utilizzando. Questi APIs consentono di interagire con il Data Catalog in modo programmatico, abilitando l'automazione e l'integrazione con altre applicazioni e servizi.

  • AWS Command Line Interface (AWS CLI) — È possibile utilizzare il AWS CLI per accedere e gestire il Data Catalog dalla riga di comando. CLIFornisce comandi per la creazione, l'aggiornamento e l'eliminazione delle definizioni dei metadati, nonché per l'interrogazione e il recupero delle informazioni sui metadati.

  • Integrazione con altri AWS servizi: il Data Catalog si integra con vari altri AWS servizi, consentendo di accedere e utilizzare i metadati archiviati nel catalogo. Ad esempio, puoi utilizzare Amazon Athena per interrogare le fonti di dati utilizzando i metadati nel Catalogo dati e utilizzare AWS Lake Formation per gestire l'accesso e la governance dei dati per le risorse del Catalogo dati.

Connessione al Data Catalog utilizzando AWS Glue l'endpoint Iceberg REST

AWS Glue l'RESTendpoint Iceberg supporta API le operazioni specificate nella specifica Apache Iceberg. REST Utilizzando un REST client Iceberg, è possibile collegare l'applicazione in esecuzione su un motore di analisi al REST catalogo ospitato nel Data Catalog.

L'endpoint supporta entrambe le specifiche della tabella Apache Iceberg: v1 e v2, con l'impostazione predefinita v2. Quando si utilizza la specifica della tabella Iceberg v1, è necessario specificare v1 nella chiamata. API Utilizzando l'APIoperazione, puoi accedere alle tabelle Iceberg archiviate sia nello storage di oggetti Amazon S3 che nello storage Amazon S3 Table.

Configurazione degli endpoint

È possibile accedere al REST catalogo AWS Glue Iceberg utilizzando l'endpoint del servizio. Fate riferimento alla guida di riferimento AWS Glue sugli endpoint di servizio per l'endpoint specifico della regione. Ad esempio, quando ci si connette alla AWS Glue regione us-east-1, è necessario configurare la proprietà dell'URIendpoint come segue:

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

Proprietà di configurazione aggiuntive: quando si utilizza il client Iceberg per connettere un motore di analisi come Spark all'endpoint del servizio, è necessario 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()
     

Connessione al Data Catalog utilizzando AWS Glue l'endpoint di estensione Iceberg REST

AWS Glue RESTL'endpoint di estensione Iceberg fornisce funzionalità aggiuntiveAPIs, non presenti nelle REST specifiche Apache Iceberg, e fornisce funzionalità di pianificazione della scansione lato server. Questi elementi aggiuntivi APIs vengono utilizzati quando accedi alle tabelle archiviate nello storage gestito di Amazon Redshift. L'endpoint è accessibile da un'applicazione che utilizza le estensioni Apache Iceberg. AWS Glue Data Catalog

Configurazione degli endpoint: un catalogo con tabelle nello storage gestito di Redshift è accessibile utilizzando l'endpoint del servizio. Consulta la guida di riferimento sugli endpoint AWS Glue di servizio per l'endpoint specifico della regione. Ad esempio, quando ci si connette alla AWS Glue regione us-east-1, è necessario configurare la proprietà dell'URIendpoint come segue:

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()
    

Autenticazione e autorizzazione dell'accesso agli endpoint del servizio AWS Glue

APIle richieste agli AWS Glue Data Catalog endpoint vengono autenticate utilizzando AWS Signature Version 4 (SigV4). Consulta AWS la sezione Signature Version 4 per API le richieste per saperne di più su SigV4. AWS

Quando accede all'endpoint del AWS Glue servizio e ai AWS Glue metadati, l'applicazione assume un ruolo che richiede un'IAMazione. glue:getCatalog IAM

RESToperazione RESTpercorso AWS Glue IAMAzione CloudTrail EventName Autorizzazioni Lake Formation
GetConfig GET/config GetCatalog

GetConfig

Non richiesto.
ListNamespaces GET/namespaces GetDatabases GetDatabases ALL, DESCRIBE, SELECT
CreateNamespace POST/namespace 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/spazio dei nomi/ {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

Puoi utilizzare le autorizzazioni in modalità ibrida IAM AWS Lake Formation, o Lake Formation per gestire l'accesso al Data Catalog predefinito e ai relativi oggetti.

I cataloghi federati AWS Glue Data Catalog hanno localizzazioni dei dati registrate da Lake Formation. Lake Formation si integra con Data Catalog e fornisce autorizzazioni in stile database per gestire l'accesso degli utenti agli oggetti del catalogo. In Lake Formation, è necessario impostare le autorizzazioni per l'IAMutente o il ruolo utilizzato per creare, inserire o eliminare dati. Le autorizzazioni sono le stesse delle tabelle esistenti AWS Glue :

  • CREATE_ CATALOG — Necessario per creare cataloghi

  • CREATE_ DATABASE — Necessario per creare database

  • CREATE_ TABLE — Necessario per creare tabelle

  • DELETE— Necessario per eliminare i dati da una tabella

  • DESCRIBE— Necessario per leggere i metadati

  • DROP— Necessario per eliminare/eliminare una tabella o un database

  • INSERT: Necessario quando il principale deve inserire dati in una tabella

  • SELECT: Necessario quando il principale deve selezionare i dati da una tabella

Per ulteriori informazioni, consulta il riferimento alle autorizzazioni di Lake Formation nella Guida per gli AWS Lake Formation sviluppatori.

Connessione a Data Catalog da un'applicazione Spark autonoma

È possibile connettersi al Data Catalog da un'applicazione stand utilizzando un connettore Apache Iceberg.

  1. Crea un IAM ruolo per l'applicazione Spark.

  2. Connettiti all'endpoint AWS Glue Iceberg Rest utilizzando il connettore Iceberg.

    # 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. Interroga i dati nel Data Catalog.

    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()
           

Mappatura dei dati tra Amazon Redshift e Apache Iceberg

Redshift e Iceberg supportano diversi tipi di dati. La seguente matrice di compatibilità descrive il supporto e le limitazioni nella mappatura dei dati tra questi due sistemi di dati. Consulta le specifiche dei tipi di dati di Amazon Redshift e della tabella Apache Iceberg per maggiori dettagli sui tipi di dati supportati nei rispettivi sistemi di dati.

Tipo di dati Redshift Alias Tipo di dati Iceberg
SMALLINT INT2 int
INTEGER INT, INT4 int
BIGINT INT8 Long
DECIMAL NUMERIC decimal
REAL FLOAT4 float
REAL FLOAT4 float
DOUBLE PRECISION FLOAT8, FLOAT double
CHAR CHARACTER, NCHAR string
VARCHAR CHARACTER VARYING, NVARCHAR Stringa
BPCHAR Stringa
TEXT Stringa
DATE data
TIME TIME WITHOUT TIMEZONE time
TIME TIME WITH TIMEZONE non supportato
TIMESTAMP TIMESTAMP WITHOUT TIMEZONE TIMESTAMP
TIMESTAMPZ TIMESTAMP WITH TIMEZONE TIMESTAMPZ
INTERVALYEARPER MONTH Non supportato
INTERVALDAYA SECOND Non supportato
BOOLEAN BOOL bool
HLLSKETCH Non supportato
SUPER Non supportato
VARBYTE VARBINARY, BINARY VARYING binary
GEOMETRY Non supportato
GEOGRAPHY Non supportato

Considerazioni e limitazioni relative all'utilizzo di AWS Glue Iceberg Catalog REST APIs

Di seguito sono riportate le considerazioni e le limitazioni relative all'utilizzo del comportamento operativo di Apache Iceberg REST Catalog Data Definition Language (). DDL

Considerazioni
  • DeleteTable APIcomportamento: DeleteTable API supporta un'opzione di eliminazione. Quando l'eliminazione è impostata sutrue, i dati della tabella vengono eliminati, altrimenti i dati non vengono eliminati. Per le tabelle in Amazon S3, l'operazione non eliminerà i dati delle tabelle. L'operazione ha esito negativo quando la tabella viene archiviata in Amazon S3 e. purge = TRUE,

    Per le tabelle archiviate nello storage gestito di Amazon Redshift, l'operazione eliminerà i dati delle tabelle, analogamente al DROP TABLE comportamento di Amazon Redshift. L'operazione ha esito negativo quando la tabella viene archiviata in Amazon Redshift e. purge = FALSE

  • CreateTable APIcomportamento: l'CreateTableAPIoperazione non supporta l'opzionestate-create = TRUE.

  • RenameTableAPIcomportamento: l'RenameTableoperazione è supportata nelle tabelle in Amazon Redshift ma non in Amazon S3.

  • DDLoperazioni per namespace e tabelle in Amazon Redshift: le operazioni di creazione, aggiornamento, eliminazione per namespace e tabelle in Amazon Redshift sono operazioni asincrone perché dipendono da quando il gruppo di lavoro gestito di Amazon Redshift è disponibile DDL e DML se è in corso una transazione e l'operazione deve attendere il blocco e quindi tentare di apportare modifiche.

    Durante un'operazione di creazione, aggiornamento o eliminazione, l'endpoint restituisce una risposta 202 con il seguente payload.

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

    Ad esempio, l'endpoint fornirà la seguente risposta per un'operazione: UpdateTable

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

    Per tenere traccia dello stato di avanzamento di questa transazione, puoi utilizzare CheckTransactionStatusAPI, nella forma seguente:

    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
    }
            
Limitazioni
  • Le visualizzazioni APIs nella REST specifica Apache Iceberg non sono supportate in AWS Glue REST Iceberg Catalog.