Acceso a las tablas de Amazon S3 con Amazon EMR
Amazon EMR (conocido antes como Amazon Elastic MapReduce) es una plataforma de clúster administrada que simplifica la ejecución de los marcos de trabajo de macrodatos, tales como Apache Hadoop y Apache Spark, en AWS para procesar y analizar grandes cantidades de datos. Mediante el uso de estos marcos de trabajo y proyectos de código abierto relacionados, puede procesar datos para fines de análisis y cargas de trabajo de inteligencia empresarial. Además, Amazon EMR permite transformar y trasladar grandes cantidades de datos hacia y desde otros almacenes y bases de datos de AWS.
Puede utilizar clústeres de Apache Iceberg en Amazon EMR para trabajar con tablas de S3 mediante la conexión a buckets de tablas en una sesión de Spark. Para conectarse a buckets de tablas en Amazon EMR, puede utilizar la integración de servicios de análisis de AWS a través del AWS Glue Data Catalog, o puede utilizar el catálogo de clientes de código abierto del catálogo de Amazon S3 para Apache Iceberg.
Conexión a los buckets de tablas de S3 con Spark en un clúster Iceberg de Amazon EMR
En este procedimiento, se configura un clúster de Amazon EMR configurado para Apache Iceberg y luego se inicia una sesión de Spark que se conecta a los buckets de tablas. Puede configurarlo con la integración de servicios de análisis de AWS a través de AWS Glue, o puede utilizar el catálogo de clientes de código abierto de Tablas de Amazon S3 para Apache Iceberg. Para obtener información sobre el catálogo de clientes, consulte Acceso a tablas mediante el punto de conexión Iceberg REST de Tablas de Amazon S3.
Elija el método de uso de tablas con Amazon EMR entre las siguientes opciones.
- Amazon S3 Tables Catalog for Apache Iceberg
-
Se necesitan los siguientes requisitos previos para consultar tablas con Spark en Amazon EMR mediante el catálogo de Tablas de Amazon S3 para Apache Iceberg.
Configuración de un clúster de Amazon EMR para consultar tablas con Spark
Cree un clúster con la siguiente configuración. Para utilizar este ejemplo, reemplace los user input placeholders
con su propia información.
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"}
}]
-
Conéctese al nodo principal de Spark mediante SSH.
-
Para inicializar una sesión de Spark para Iceberg que se conecte al bucket de tablas, introduzca el siguiente comando. Reemplace el user input placeholders
por el ARN del bucket de tablas.
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
-
Consulte las tablas con Spark SQL. Para obtener consultas de ejemplo, consulte Consulta de tablas de S3 con Spark SQL.
- AWS analytics services integration
-
Se necesitan los siguientes requisitos previos para consultar tablas con Spark en Amazon EMR mediante la integración de servicios de análisis de AWS.
Configuración de un clúster de Amazon EMR para consultar tablas con Spark
Cree un clúster con la siguiente configuración. Para utilizar este ejemplo, reemplace los valores de user input placeholder
con su propia información.
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"}
}]
-
Conéctese al nodo principal de Spark mediante SSH.
-
Introduzca el siguiente comando para inicializar una sesión de Spark para Iceberg que se conecte a las tablas. Reemplace los user
input placeholders
con su propia información.
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
-
Consulte las tablas con Spark SQL. Para obtener consultas de ejemplo, consulte Consulta de tablas de S3 con Spark SQL
Si utiliza el comando DROP TABLE PURGE
con Amazon EMR:
Versión 7.5 de Amazon EMR
Establezca la configuración de spark.sql.catalog.your-catalog-name
.cache-enabled
de Spark en false
. Si esta configuración se establece en true
, ejecute el comando en una nueva sesión o aplicación para que la caché de la tabla no se active.
-
Versiones de Amazon EMR superiores a la 7.5
DROP TABLE
no se admite. Puede utilizar la API de REST DeleteTable
de Tablas de S3 para eliminar una tabla.