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.
Crea un IAM ruolo per l'applicazione Spark.
-
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"
-
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
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 su
true
, 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'
CreateTable
APIoperazione non supporta l'opzionestate-create = TRUE
. -
RenameTable
APIcomportamento: l'RenameTable
operazione è 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
CheckTransactionStatus
API, 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.