Seleziona le tue preferenze relative ai cookie

Utilizziamo cookie essenziali e strumenti simili necessari per fornire il nostro sito e i nostri servizi. Utilizziamo i cookie prestazionali per raccogliere statistiche anonime in modo da poter capire come i clienti utilizzano il nostro sito e apportare miglioramenti. I cookie essenziali non possono essere disattivati, ma puoi fare clic su \"Personalizza\" o \"Rifiuta\" per rifiutare i cookie prestazionali.

Se sei d'accordo, AWS e le terze parti approvate utilizzeranno i cookie anche per fornire utili funzionalità del sito, ricordare le tue preferenze e visualizzare contenuti pertinenti, inclusa la pubblicità pertinente. Per continuare senza accettare questi cookie, fai clic su \"Continua\" o \"Rifiuta\". Per effettuare scelte più dettagliate o saperne di più, fai clic su \"Personalizza\".

Esecuzione di processi ETL su tabelle Amazon S3 con AWS Glue

Modalità Focus
Esecuzione di processi ETL su tabelle Amazon S3 con AWS Glue - Amazon Simple Storage Service

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à.

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à.

Nota

L'integrazione con i servizi di AWS analisi per i bucket da tavolo è in versione di anteprima ed è soggetta a modifiche.

AWS Glue è un servizio di integrazione dei dati senza server che consente agli utenti di analisi di scoprire, preparare, spostare e integrare facilmente i dati provenienti da più fonti. Puoi utilizzare i AWS Glue processi per eseguire pipeline di estrazione, trasformazione e caricamento (ETL) per caricare i dati nei tuoi data lake. Per ulteriori informazioni su AWS Glue, consulta What is? AWS Glue nella Guida per gli AWS Glue sviluppatori.

Un AWS Glue job incapsula uno script che si connette ai dati di origine, li elabora e quindi li scrive nella destinazione dei dati. Di solito un processo esegue script di estrazione, trasformazione e caricamento (ETL). Jobs può eseguire script progettati per Apache Spark e Ray ambienti di runtime o per scopi generici Python script (Python lavori di shell). È possibile monitorare le esecuzioni dei processi per comprendere i parametri di runtime come esito positivo, durata e ora di inizio.

Puoi utilizzare i AWS Glue job per elaborare i dati nelle tue tabelle S3 connettendoti direttamente alle tabelle utilizzando il catalogo client Amazon S3 Tables Catalog per Apache Iceberg. JAR.

Prerequisiti per i lavori ETL di S3 Tables AWS Glue

Prima di poter interrogare le tabelle da un AWS Glue job, devi configurare un ruolo IAM da AWS Glue utilizzare per eseguire il job e caricare Amazon S3 Tables Catalog for Apache Iceberg. JAR a un bucket S3 a cui AWS Glue può accedere quando esegue il processo.

  • Integrare i bucket di tabelle con i servizi di analisi di AWS.

  • Crea un ruolo IAM per. AWS Glue

    • Allega la policy AmazonS3TablesFullAccess gestita al ruolo.

    • Allega la policy AmazonS3FullAccess gestita al ruolo.

  • Scarica l'ultima versione del catalogo clienti Amazon S3 Tables Catalog for Apache Iceberg JAR da Maven e poi caricalo in un bucket Amazon S3.

    1. Controlla la versione più recente su Maven Central. Puoi scaricare il JAR da Maven central utilizzando il browser o utilizzando il seguente comando. Assicurati di sostituirlo version number con la versione più recente.

      wget https://repo1.maven.org/maven2/software/amazon/s3tables/s3-tables-catalog-for-iceberg-runtime/0.1.4/s3-tables-catalog-for-iceberg-runtime-0.1.4.jar
    2. Carica il file scaricato JAR a un bucket S3 a cui il tuo ruolo AWS Glue IAM può accedere. È possibile utilizzare il seguente AWS CLI comando per caricare il JAR. Assicurati di sostituirla version number con la versione più recente e poi bucket name and path con la tua.

      aws s3 cp s3-tables-catalog-for-iceberg-runtime-0.1.4.jar s3://amzn-s3-demo-bucket1/jars/

Crea un AWS Glue ETL PySpark script per interrogare le tabelle S3

Per accedere ai dati della tabella quando si esegue un processo AWS Glue ETL, si utilizza un PySpark script per configurare un Spark sessione per Apache Iceberg che si connette al tuo table bucket S3 quando il job è in esecuzione. Puoi modificare uno script esistente per connetterti ai tuoi table bucket o creare un nuovo script. Per ulteriori informazioni sulla creazione di AWS Glue script, consulta Tutorial: Writing an AWS Glue for Spark script nella Developer Guide.AWS Glue

Usa il seguente frammento di codice nel tuo PySpark script per la configurazione Sparkè la connessione al tuo table bucket. placeholder valuesSostituiscili con le informazioni per il tuo bucket da tavolo.

# Configure Spark session for Iceberg spark_conf = SparkSession.builder.appName("GlueJob") .config("spark.sql.catalog.s3tablesbucket", "org.apache.iceberg.spark.SparkCatalog") .config("spark.sql.catalog.s3tablesbucket.catalog-impl", "software.amazon.s3tables.iceberg.S3TablesCatalog") .config("spark.sql.catalog.s3tablesbucket.warehouse", "arn:aws:s3tables:REGION:111122223333:bucket/amzn-s3-demo-table-bucket") .config("spark.sql.defaultCatalog", "s3tablesbucket") .config("spark.sql.extensions", "org.apache.iceberg.spark.extensions.IcebergSparkSessionExtensions") .config("spark.sql.catalog.s3tablesbucket.cache-enabled", "false")

Script di esempio

Di seguito è riportato un esempio PySpark script che puoi usare per testare l'interrogazione delle tabelle S3 con un AWS Glue job. Lo script si connette al bucket della tabella e quindi esegue query per: creare un nuovo namespace, creare una tabella di esempio, inserire dati nella tabella e i dati della tabella. Per utilizzare lo script, sostituiscilo placeholder values con le informazioni relative al tuo table bucket.

import sys from awsglue.transforms import * from awsglue.utils import getResolvedOptions from pyspark.context import SparkContext from awsglue.context import GlueContext from awsglue.job import Job from pyspark.sql import SparkSession # Configure Spark session for Iceberg spark_conf = SparkSession.builder.appName("GlueJob") .config("spark.sql.catalog.s3tablesbucket", "org.apache.iceberg.spark.SparkCatalog") .config("spark.sql.catalog.s3tablesbucket.catalog-impl", "software.amazon.s3tables.iceberg.S3TablesCatalog") .config("spark.sql.catalog.s3tablesbucket.warehouse", "arn:aws:s3tables:REGION:111122223333:bucket/amzn-s3-demo-table-bucket") .config("spark.sql.defaultCatalog", "s3tablesbucket") .config("spark.sql.extensions", "org.apache.iceberg.spark.extensions.IcebergSparkSessionExtensions") .config("spark.sql.catalog.s3tablesbucket.cache-enabled", "false") # Initialize Glue context with custom Spark configuration sc = SparkContext.getOrCreate(conf=spark_conf.getOrCreate().sparkContext.getConf()) glueContext = GlueContext(sc) spark = glueContext.spark_session ## @params: [JOB_NAME] args = getResolvedOptions(sys.argv, ['JOB_NAME']) job = Job(glueContext) job.init(args['JOB_NAME'], args) namespace = "new_namespace" table = "new_table" def run_sql(query): try: result = spark.sql(query) result.show() return result except Exception as e: print(f"Error executing query '{query}': {str(e)}") return None def main(): try: # Create a new namespace if it doesn't exist print("CREATE NAMESPACE") run_sql(f"CREATE NAMESPACE IF NOT EXISTS {namespace}") # Show all namespaces print("SHOW NAMESPACES") run_sql("SHOW NAMESPACES") # Describe a specific namespace print("DESCRIBE NAMESPACE") run_sql(f"DESCRIBE NAMESPACE {namespace}") # Create table in the namespace print("CREATE TABLE") create_table_query = f""" CREATE TABLE IF NOT EXISTS {namespace}.{table} ( id INT, name STRING, value INT ) """ run_sql(create_table_query) # Insert data into table print("INSERT INTO") insert_query = f""" INSERT INTO {namespace}.{table} VALUES (1, 'ABC', 100), (2, 'XYZ', 200) """ run_sql(insert_query) # Show tables in the namespace print("SHOW TABLES") run_sql(f"SHOW TABLES IN {namespace}") # Select all from a specific table print("SELECT FROM TABLE") run_sql(f"SELECT * FROM {namespace}.{table} LIMIT 20") except Exception as e: print(f"An error occurred in main execution: {str(e)}") raise # Re-raise the exception for Glue to handle finally: job.commit() if __name__ == "__main__": try: main() except Exception as e: print(f"Job failed with error: {str(e)}") sys.exit(1)

Crea un job AWS Glue ETL che interroga le tabelle S3

Quando configuri un AWS Glue lavoro per le tabelle S3, includi Amazon S3 Tables Catalog per Apache Iceberg. JAR come dipendenza aggiuntiva per consentire al job di interrogare direttamente le tabelle. Le seguenti procedure mostrano come eseguire questa operazione utilizzando AWS CLI o utilizzando la console con AWS Glue Studio. AWS Glue Studio per creare un lavoro tramite un'interfaccia visiva, un taccuino di codice interattivo o un editor di script. Per ulteriori informazioni, consulta la sezione Creazione di lavori AWS Glue nella Guida per l'AWS Glue utente.

La procedura seguente mostra come utilizzare l'editor di AWS Glue Studio script per creare un job ETL che interroga le tabelle S3.

  1. Apri la console all' AWS Glue indirizzo. https://console.aws.amazon.com/glue/

  2. Dal riquadro di navigazione, scegli ETL jobs.

  3. Scegliete Script editor, quindi scegliete Carica script e caricate il PySpark script che hai creato per interrogare le tabelle S3.

  4. Seleziona la scheda Dettagli del lavoro e inserisci quanto segue per le proprietà di base.

    • In Nome, inserisci un nome per il lavoro.

    • Per IAM Role, seleziona il ruolo per cui hai creato AWS Glue.

  5. Espandi le proprietà avanzate e, in Dependent JARs path, inserisci l'URI S3 del client catalog jar che hai caricato in un bucket S3 come prerequisito. Ad esempio, s3:///amzn-s3-demo-bucket1/s3- -runtime- .jar jars tables-catalog-for-iceberg 0.1.4

  6. Scegliete Salva per creare il lavoro.

  7. Scegli Esegui, avvia il processo e controlla lo stato del lavoro nella scheda Esecuzioni.

La procedura seguente mostra come utilizzare l'editor di AWS Glue Studio script per creare un job ETL che interroga le tabelle S3.

  1. Apri la console all' AWS Glue indirizzo. https://console.aws.amazon.com/glue/

  2. Dal riquadro di navigazione, scegli ETL jobs.

  3. Scegliete Script editor, quindi scegliete Carica script e caricate il PySpark script che hai creato per interrogare le tabelle S3.

  4. Seleziona la scheda Dettagli del lavoro e inserisci quanto segue per le proprietà di base.

    • In Nome, inserisci un nome per il lavoro.

    • Per IAM Role, seleziona il ruolo per cui hai creato AWS Glue.

  5. Espandi le proprietà avanzate e, in Dependent JARs path, inserisci l'URI S3 del client catalog jar che hai caricato in un bucket S3 come prerequisito. Ad esempio, s3:///amzn-s3-demo-bucket1/s3- -runtime- .jar jars tables-catalog-for-iceberg 0.1.4

  6. Scegliete Salva per creare il lavoro.

  7. Scegli Esegui, avvia il processo e controlla lo stato del lavoro nella scheda Esecuzioni.

La procedura seguente mostra come utilizzare per AWS CLI creare un job ETL che interroga le tabelle S3. Per utilizzare i comandi, sostituiscili placeholder values con i tuoi.

  1. Crea un lavoro Glue.

    aws glue create-job \ --name etl-tables-job \ --role arn:aws:iam::111122223333:role/AWSGlueServiceRole \ --command '{ "Name": "glueetl", "ScriptLocation": "s3://amzn-s3-demo-bucket1/scripts/glue-etl-query.py", "PythonVersion": "3" }' \ --default-arguments '{ "--job-language": "python", "--class": "GlueApp", "--extra-jars": "s3://amzn-s3-demo-bucket1/jars/s3-tables-catalog-for-iceberg-runtime-0.1.4.jar" }' \ --glue-version "5.0"
  2. Inizia il tuo lavoro.

    aws glue start-job-run \ --job-name etl-tables-job
  3. Per verificare lo stato del processo, copia l'ID di esecuzione dal comando precedente e inseriscilo nel comando seguente.

    aws glue get-job-run --job-name etl-tables-job \ --run-id jr_ec9a8a302e71f8483060f87b6c309601ea9ee9c1ffc2db56706dfcceb3d0e1ad

La procedura seguente mostra come utilizzare per AWS CLI creare un job ETL che interroga le tabelle S3. Per utilizzare i comandi, sostituiscili placeholder values con i tuoi.

  1. Crea un lavoro Glue.

    aws glue create-job \ --name etl-tables-job \ --role arn:aws:iam::111122223333:role/AWSGlueServiceRole \ --command '{ "Name": "glueetl", "ScriptLocation": "s3://amzn-s3-demo-bucket1/scripts/glue-etl-query.py", "PythonVersion": "3" }' \ --default-arguments '{ "--job-language": "python", "--class": "GlueApp", "--extra-jars": "s3://amzn-s3-demo-bucket1/jars/s3-tables-catalog-for-iceberg-runtime-0.1.4.jar" }' \ --glue-version "5.0"
  2. Inizia il tuo lavoro.

    aws glue start-job-run \ --job-name etl-tables-job
  3. Per verificare lo stato del processo, copia l'ID di esecuzione dal comando precedente e inseriscilo nel comando seguente.

    aws glue get-job-run --job-name etl-tables-job \ --run-id jr_ec9a8a302e71f8483060f87b6c309601ea9ee9c1ffc2db56706dfcceb3d0e1ad
PrivacyCondizioni del sitoPreferenze cookie
© 2025, Amazon Web Services, Inc. o società affiliate. Tutti i diritti riservati.