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.
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
Crie um cluster com a configuração a seguir. Para usar esse exemplo, substitua os
por suas próprias informações.user input placeholders
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://
/ \ --instance-type m5.xlarge \ --instance-count 2 \ --service-roleamzn-s3-demo-bucket
EMR_DefaultRole
\ --ec2-attributes \ InstanceProfile=EMR_EC2_DefaultRole
,SubnetId=subnet-1234567890abcdef0
,KeyName=my-key-pair
configurations.json
:[{ "Classification":"iceberg-defaults", "Properties":{"iceberg.enabled":"true"} }]
-
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
pelo ARN do bucket de tabela.user input placeholders
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 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.
do Spark comoyour-catalog-name
.cache-enabledfalse
. Se essa configuração estiver definida comotrue
, 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 RESTDeleteTable
de Tabelas do S3 para excluir uma tabela.