View a markdown version of this page

Accesso alle tabelle Amazon S3 con Amazon EMR - 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à.

Accesso alle tabelle Amazon S3 con Amazon EMR

Amazon EMR (precedentemente chiamata Amazon Elastic MapReduce) è una piattaforma cluster gestita che semplifica l'esecuzione di framework di big data, come Apache Hadoop e, suApache Spark, AWS per elaborare e analizzare grandi quantità di dati. Utilizzando questi framework e i relativi progetti open source, è possibile elaborare i dati per scopi di analisi e carichi di lavoro di business intelligence. Amazon EMR consente inoltre di trasformare e spostare grandi quantità di dati da e verso altri AWS archivi di dati e database.

È possibile usare i cluster Apache Iceberg in Amazon EMR con le tabelle S3 connettendosi ai bucket di tabelle in una sessione di Spark. Per connetterti ai bucket di tabelle in Amazon EMR, puoi utilizzare l'integrazione dei servizi di AWS analisi tramite AWS Glue Data Catalog il catalogo open source Amazon S3 Tables Catalog for client. Apache Iceberg

Nota

Tabelle S3 è supportato su Amazon EMR versione 7.5 o successiva.

Connessione ai bucket di tabelle S3 con Spark su Amazon EMR Iceberg cluster

In questa procedura, è possibile impostare un cluster Amazon EMR configurato per Apache Iceberg e avviare una sessione di Spark che si connette ai bucket di tabelle. Puoi configurarlo utilizzando l'integrazione dei servizi di AWS analisi tramite AWS Glue, oppure puoi utilizzare il catalogo open source Amazon S3 Tables Catalog for Apache Iceberg Client. Per ulteriori informazioni sul catalogo del client, consulta Accesso alle tabelle utilizzando Amazon S3 Tables Iceberg REST endpoint.

Scegli il metodo di utilizzo delle tabelle con Amazon EMR tra le seguenti opzioni.

Amazon S3 Tables Catalog for Apache Iceberg

I seguenti prerequisiti sono necessari per eseguire query sulle tabelle con Spark su Amazon EMR utilizzando il Catalogo di Tabelle Amazon S3 per Apache Iceberg.

Per la versione più recente del catalogo client JAR, consulta il repository GitHub s3-tables-catalog.

Prerequisiti
  • Associare la policy AmazonS3TablesFullAccess al ruolo IAM utilizzato per Amazon EMR.

Per configurare un cluster Amazon EMR per interrogare le tabelle con Spark
  1. Crea un cluster con la seguente configurazione. Per utilizzare questo esempio, sostituisci user input placeholders con le informazioni appropriate.

    aws emr create-cluster --release-label emr-7.5.0 \ --applications Name=Spark \ --configurations file://configurations.json \ --region us-east-1 \ --name My_Spark_Iceberg_Cluster \ --log-uri s3://amzn-s3-demo-bucket/ \ --instance-type m5.xlarge \ --instance-count 2 \ --service-role EMR_DefaultRole \ --ec2-attributes \ InstanceProfile=EMR_EC2_DefaultRole,SubnetId=subnet-1234567890abcdef0,KeyName=my-key-pair

    configurations.json:

    [{ "Classification":"iceberg-defaults", "Properties":{"iceberg.enabled":"true"} }]
  2. Connettersi al nodo principale di Spark tramite SSH.

  3. Per inizializzare una sessione di Spark per Iceberg che si connette al proprio bucket di tabelle, inserire il seguente comando. Sostituisci user input placeholders con l’ARN del bucket di tabelle.

    spark-shell \ --packages software.amazon.s3tables:s3-tables-catalog-for-iceberg-runtime:0.1.8 \ --conf spark.sql.catalog.s3tablesbucket=org.apache.iceberg.spark.SparkCatalog \ --conf spark.sql.catalog.s3tablesbucket.catalog-impl=software.amazon.s3tables.iceberg.S3TablesCatalog \ --conf spark.sql.catalog.s3tablesbucket.warehouse=arn:aws:s3tables:us-east-1:111122223333:bucket/amzn-s3-demo-bucket1 \ --conf spark.sql.defaultCatalog=s3tablesbucket \ --conf spark.sql.extensions=org.apache.iceberg.spark.extensions.IcebergSparkSessionExtensions
  4. Eseguire query sulle tabelle con Spark SQL. Per query di esempio, consulta Interrogazione di tabelle S3 con Spark SQL.

AWS analytics services integration

I seguenti prerequisiti sono necessari per interrogare le tabelle con Spark Amazon EMR utilizzando l'integrazione dei servizi di AWS analisi.

Prerequisiti
Per configurare un cluster Amazon EMR con cui interrogare le tabelle Spark
  1. Crea un cluster con la seguente configurazione. Per utilizzare questo esempio, sostituisci i valori user input placeholder con le informazioni appropriate.

    aws emr create-cluster --release-label emr-7.5.0 \ --applications Name=Spark \ --configurations file://configurations.json \ --region us-east-1 \ --name My_Spark_Iceberg_Cluster \ --log-uri s3://amzn-s3-demo-bucket/ \ --instance-type m5.xlarge \ --instance-count 2 \ --service-role EMR_DefaultRole \ --ec2-attributes \ InstanceProfile=EMR_EC2_DefaultRole,SubnetId=subnet-1234567890abcdef0,KeyName=my-key-pair

    configurations.json:

    [{ "Classification":"iceberg-defaults", "Properties":{"iceberg.enabled":"true"} }]
  2. Connettersi al nodo principale di Spark tramite SSH.

  3. Inserire il seguente comando per inizializzare una sessione di Spark per Iceberg che si connette alle proprie tabelle. Sostituisci user input placeholders per la Regione, l’ID dell’account e il nome del bucket di tabelle con le informazioni appropriate.

    spark-shell \ --conf spark.sql.extensions=org.apache.iceberg.spark.extensions.IcebergSparkSessionExtensions \ --conf spark.sql.defaultCatalog=s3tables \ --conf spark.sql.catalog.s3tables=org.apache.iceberg.spark.SparkCatalog \ --conf spark.sql.catalog.s3tables.catalog-impl=org.apache.iceberg.aws.glue.GlueCatalog \ --conf spark.sql.catalog.s3tables.client.region=us-east-1 \ --conf spark.sql.catalog.s3tables.glue.id=111122223333:s3tablescatalog/amzn-s3-demo-table-bucket
  4. Eseguire query sulle tabelle con Spark SQL. Per query di esempio, consulta Interrogazione di tabelle S3 con Spark SQL.

Nota

Se si utilizza il comando DROP TABLE PURGE con Amazon EMR:

  • Amazon EMR versione 7.5

    Imposta la configurazione di Spark su spark.sql.catalog.your-catalog-name.cache-enabled per false. Se questa configurazione è impostata su true, eseguire il comando in una nuova sessione o applicazione in modo che la cache della tabella non venga attivata.

  • Versioni di Amazon EMR successive alla 7.5

    DROP TABLE non è supportato. È possibile utilizzare la REST API DeleteTable di Tabelle S3 per eliminare una tabella.