Acessar tabelas do Amazon S3 com o Amazon EMR - Amazon Simple Storage Service

Acessar tabelas do Amazon S3 com o Amazon EMR

O Amazon EMR (anteriormente chamado de Amazon Elastic MapReduce) é uma plataforma de cluster gerenciada que simplifica a execução de frameworks de big data, como o Apache Hadoop e Apache Spark, na AWS para processar e analisar grandes quantidades de dados. Ao usar essas estruturas e projetos de código aberto relacionados, é possível processar dados para finalidades de analytics e workloads de inteligência de negócios. O Amazon EMR também permite transformar e mover grandes volumes de dados para dentro e para fora de outros datastores e bancos de dados da AWS.

Você pode usar clusters do Apache Iceberg no Amazon EMR para trabalhar com tabelas do S3, conectando-se a buckets de tabela em uma sessão do Spark. Para se conectar aos buckets de tabela no Amazon EMR, é possível usar a integração de serviços de analytics da AWS por meio do AWS Glue Data Catalog, ou você pode usar o catálogo de cliente de código aberto do Catálogo de Tabelas do Amazon S3 para Apache Iceberg.

nota

A funcionalidade Tabelas do S3 é compatível com o Amazon EMR versão 7.5 ou superior.

Conectar-se a buckets de tabela do S3 com o Spark em um cluster do Iceberg no Amazon EMR

Neste procedimento, você configura um cluster do Amazon EMR definido para Apache Iceberg, depois inicializa uma sessão do Spark que se conecta aos buckets de tabela. É possível configurar isso usando os serviços de analytics da AWS por meio do AWS Glue, ou você pode usar o catálogo de cliente de código aberto do Catálogo de Tabelas do Amazon S3 para Apache Iceberg. Para ter mais informações sobre o catálogo de cliente, consulte Acessar tabelas usando o endpoint Iceberg REST do serviço Tabelas do Amazon S3.

Escolha um método de uso de tabelas com o Amazon EMR entre as opções a seguir.

Amazon S3 Tables Catalog for Apache Iceberg

Os pré-requisitos a seguir se aplicam para consultar tabelas com o Spark no Amazon EMR usando o Catálogo de Tabelas do Amazon S3 para Apache Iceberg.

Pré-requisitos
  • Anexe a política AmazonS3TablesFullAccess ao perfil do IAM que você usa para o Amazon EMR.

Como configurar um cluster do Amazon EMR para consultar tabelas com o Spark
  1. Crie um cluster com a configuração a seguir. Para usar esse exemplo, substitua os user input placeholders por suas próprias informações.

    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. Conecte-se ao nó primário do Spark usando SSH.

  3. Para inicializar uma sessão do Spark para o Iceberg que estabelece conexão com o bucket de tabela, insira o comando a seguir. Substitua o user input placeholders pelo ARN do bucket de tabela.

    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 as tabelas com Spark SQL. Para conferir exemplos, consulte Consultar tabelas do S3 com o Spark SQL.

AWS analytics services integration

Os pré-requisitos a seguir se aplicam para consultar tabelas com o Spark no Amazon EMR usando a integração de serviços de analytics da AWS.

Pré-requisitos
Como configurar um cluster do Amazon EMR para consultar tabelas com o Spark
  1. Crie um cluster com a configuração a seguir. Para usar esse exemplo, substitua os valores de user input placeholder por suas próprias informações.

    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. Conecte-se ao nó primário do Spark usando SSH.

  3. Insira o comando a seguir para inicializar uma sessão do Spark para o Iceberg que estabelece conexão com as tabelas. Substitua os user input placeholders por suas próprias informações.

    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 as tabelas com Spark SQL. Para conferir exemplos, consulte Consultar tabelas do S3 com o Spark SQL.

nota

Se você estiver usando o comando DROP TABLE PURGE com o Amazon EMR:

  • Amazon EMR versão 7.5

    Defina a configuração spark.sql.catalog.your-catalog-name.cache-enabled do Spark como false. Se essa configuração estiver definida como true, execute o comando em uma nova sessão ou aplicação para que o cache da tabela não seja ativado.

  • Amazon EMR versões posteriores a 7.5

    Não há suporte ao DROP TABLE. É possível usar a API REST DeleteTable de Tabelas do S3 para excluir uma tabela.