Acceso a las tablas de Amazon S3 con Amazon EMR - Amazon Simple Storage Service

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.

nota

Tablas de S3 es compatible con Amazon EMR versión 7.5 o superior.

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.

Requisitos previos
  • Asocie la política AmazonS3TablesFullAccess al rol de IAM que usa para Amazon EMR.

Configuración de un clúster de Amazon EMR para consultar tablas con Spark
  1. 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"} }]
  2. Conéctese al nodo principal de Spark mediante SSH.

  3. 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
  4. 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.

Requisitos previos
Configuración de un clúster de Amazon EMR para consultar tablas con Spark
  1. 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"} }]
  2. Conéctese al nodo principal de Spark mediante SSH.

  3. 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
  4. Consulte las tablas con Spark SQL. Para obtener consultas de ejemplo, consulte Consulta de tablas de S3 con Spark SQL

nota

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.