Accesso alle tabelle Amazon S3 con Amazon EMR
Amazon EMR (in precedenza Amazon Elastic MapReduce) è una piattaforma di cluster gestita che semplifica l'esecuzione di framework di big data, come Apache Hadoop e Apache Spark su 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 all'interno e all'esterno di altri datastore e database AWS.
È possibile usare i cluster Apache Iceberg in Amazon EMR con le tabelle S3 connettendosi ai bucket di tabelle in una sessione di Spark. Per connettersi ai bucket di tabelle in Amazon EMR, è possibile ricorrere all’integrazione dei servizi di analisi AWS tramite AWS Glue Data Catalog oppure è possibile utilizzare il catalogo client open source Catalogo di Tabelle Amazon S3 per Apache Iceberg.
Connessione ai bucket di tabelle S3 con Spark sul cluster Amazon EMR Iceberg
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. La configurazione può essere eseguita utilizzando l’integrazione dei servizi di analisi AWS tramite AWS Glue; in alternativa, è possibile utilizzare il catalogo client open source Catalogo di Tabelle Amazon S3 per Apache Iceberg. Per ulteriori informazioni sul catalogo del client, consulta Accesso alle tabelle utilizzando l’endpoint Iceberg REST di Tabelle Amazon S3.
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 configurare un cluster Amazon EMR con cui eseguire query sulle tabelle con Spark
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"}
}]
-
Connettersi al nodo principale di Spark tramite SSH.
-
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.3 \
--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
-
Eseguire query sulle tabelle con Spark SQL. Per query di esempio, consulta Esecuzione di query su Tabelle S3 con Spark SQL.
- AWS analytics services integration
-
I seguenti prerequisiti sono necessari per eseguire query sulle tabelle con Spark su Amazon EMR utilizzando l’integrazione dei servizi di analisi AWS.
Per configurare un cluster Amazon EMR con cui eseguire query sulle tabelle con Spark
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"}
}]
-
Connettersi al nodo principale di Spark tramite SSH.
-
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
-
Eseguire query sulle tabelle con Spark SQL. Per query di esempio, consulta Esecuzione di query su Tabelle S3 con Spark SQL.
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.