Registrar catálogos de buckets de tabela do S3 e consultar tabelas no Athena
Os buckets de tabela do Amazon S3 são um tipo de bucket no Amazon S3 criado especificamente para armazenar dados tabulares nas tabelas do Apache Iceberg. Os buckets de tabela automatizam as tarefas de gerenciamento de tabelas, como compactação, gerenciamento de snapshots e coleta de resíduos, para otimizar continuamente o desempenho das consultas e minimizar os custos. Se você está apenas começando ou tem milhares de tabelas em seu ambiente do Iceberg, os buckets de tabela simplificam os data lakes em qualquer escala. Para obter mais informações, consulte Buckets de tabela.
Considerações e limitações
-
Todas as operações de DDL aceitas em tabelas do Iceberg são compatíveis com tabelas do S3, com as seguintes exceções:
-
Não há suporte a
ALTER TABLE RENAME,CREATE VIEWeALTER DATABASE. -
OPTIMIZEeVACUUM: é possível gerenciar a compactação e o gerenciamento de snapshots no S3. Para obter mais informações, consulte a documentação de manutenção de tabelas do S3.
-
-
Não há suporte a consultas de DDL em tabelas do S3 registradas como fontes de dados do Athena.
-
Não há suporte à reutilização de resultados de consultas.
-
Em grupos de trabalho com criptografia SSE-KMS, CSE-KMS ativada, não é possível executar operações de gravação como
INSERT,UPDATE,DELETEouMERGEem tabelas do S3. -
Em grupos de trabalho com a opção S3 Requester Pays ativada, não é possível executar operações de DML em tabelas do S3.
Consultar tabelas do S3 via Athena
Conclua estas etapas obrigatórias antes de consultar tabelas do S3 no Athena
Crie um bucket de tabela do S3. Para obter mais informações, consulte Creating a table bucket no Guia do usuário do Amazon Simple Storage Service.
-
Certifique-se de que a integração de seus buckets com o AWS Glue Data Catalog seja bem-sucedida. Para obter as permissões necessárias e as etapas de configuração, consulte Prerequisites for S3 Tables integration (Pré-requisitos para a integração do Tabelas do S3) e Enabling S3 Tables integration with Glue Data Catalog (Como habilitar a integração do Tabelas do S3 com o Glue Data Catalog) no Guia do desenvolvedor do AWS Glue.
Para a entidade principal que você usa para executar consultas com o Athena, conceda permissões no catálogo do Tabelas do S3 usando uma das seguintes abordagens:
Opção 1: usar permissões do IAM
Ao usar o controle de acesso do IAM, sua entidade principal precisa de permissões tanto nos recursos AWS Glue Data Catalog quanto nos recursos do Tabelas do Amazon S3.
A lista a seguir contém todas as permissões
s3tablesnecessárias para realizar qualquer operação DDL ou DML compatível com suas Tabelas do S3 no Athena:s3tables:GetTableBuckets3tables:GetNamespaces3tables:GetTables3tables:GetTableDatas3tables:PutTableDatas3tables:ListNamespacess3tables:ListTabless3tables:DeleteNamespaces3tables:DeleteTables3tables:CreateNamespaces3tables:CreateTables3tables:UpdateTableMetadataLocation
Aplique essas permissões a recursos específicos do bucket do Tabelas do S3 e do recursos do Tabelas do S3 ou use
*como recurso para conceder acesso a todos os buckets e tabelas da sua conta. Essas permissões podem ser combinadas com a política gerenciadaAmazonAthenaFullAccesspara permitir a funcionalidade completa.Opção 2: usar as permissões do Lake Formation
Alternativamente, para habilitar o controle de acesso granular, você pode conceder permissões ao Lake Formation no catálogo do Tabelas do S3, seja por meio do console do Lake Formation ou AWS CLI. Isso requer o registro dos seus buckets da tabela do S3 como um local de dados do Lake Formation. Para obter mais informações, consulte Criar um catálogo do Tabelas do Amazon S3 no AWS Glue Data Catalog no Guia do Desenvolvedor do Lake Formation.
Enviar consultas para tabelas do S3
Envie uma consulta
CREATE DATABASEdo Athena com o usuário/perfil concedido acima. Neste exemplo,s3tablescatalogé o Catálogo de Dados do Glue principal criado com base na integração es3tablescatalog/o Catálogo de Dados do Glue secundário criado para cada bucket de tabela do S3. Há duas maneiras de fazer a consulta.amzn-s3-demo-bucket-
Com o banco de dados que você criou na etapa anterior, use
CREATE TABLEpara criar uma tabela. O exemplo a seguir cria uma tabela no banco de dadosque você criou anteriormente no catálogotest_namespaces3tablescatalog/do Glue.amzn-s3-demo-bucket -
Insira dados na tabela que você criou na etapa anterior.
-
Após inserir os dados na tabela, você poderá consultá-los.
Criar tabelas do S3 no Athena
O Athena oferece suporte à criação de tabelas em namespaces de tabela do S3 existentes ou namespaces criados no Athena com instruções CREATE DATABASE. Para criar uma tabela do S3 via Athena, a sintaxe é a mesma de quando você cria uma tabela do Iceberg, exceto que você não especifica o LOCATION, conforme mostrado no exemplo a seguir.
CREATE TABLE [db_name.]table_name (col_name data_type [COMMENT col_comment] [, ...] ) [PARTITIONED BY (col_name | transform, ... )] [TBLPROPERTIES ([, property_name=property_value] )]
Você também pode criar tabelas do S3 usando instruções CREATE TABLE AS SELECT (CTAS). Para obter mais informações, consulte CTAS para tabelas do S3.
Registrar catálogos de buckets de tabelas do S3 como fontes de dados do Athena
Para registrar catálogos de buckets de tabelas do S3 com o console do Athena, execute as etapas a seguir.
-
Abra o console do Athena em https://console.aws.amazon.com/athena/
. -
No painel de navegação, escolha Fontes de dados e catálogos.
-
Na página Fontes de dados e catálogos, escolha Criar fonte de dados.
-
Em Escolher uma fonte de dados, escolha Amazon S3 - AWS Glue Data Catalog.
-
Na seção AWS Glue Data Catalog, em Conta da fonte de dados, escolha AWS Glue Data Catalog nesta conta.
-
Em Criar uma tabela ou registrar um catálogo, escolha Registrar um novo catálogo do AWS Glue.
-
Na seção Detalhes da fonte de dados, em Nome da fonte de dados, insira o nome que deseja usar para especificar a fonte de dados em suas consultas SQL ou use o nome padrão gerado.
-
Em Catálogo, escolha Procurar para pesquisar uma lista de catálogos do AWS Glue na mesma conta. Se você não encontrar nenhum catálogo existente, crie um no console do AWS Glue
. -
Na caixa de diálogo Procurar catálogos do AWS Glue, selecione o catálogo que deseja usar e selecione Escolher.
-
(Opcional) Em Tags, adicione pares de chave/valor que queira associar à fonte de dados.
-
Escolha Próximo.
-
Na página Revisar e criar, verifique se as informações inseridas estão corretas e selecione Criar fonte de dados.
CTAS para tabelas do S3
O Amazon Athena agora é compatível com operações CREATE TABLE AS SELECT (CTAS) para tabelas do S3. Esse atributo permite criar novas tabelas do S3 com base nos resultados de uma consulta SELECT.
Ao criar uma consulta CTAS para uma tabela do S3, há algumas diferenças importantes em relação às tabelas padrão do Athena:
-
Você deve omitir a propriedade de localização porque as tabelas do S3 gerenciam automaticamente seus próprios locais de armazenamento.
-
A propriedade
table_typeassume o padrãoICEBERG, portanto, você não precisa especificá-la explicitamente na consulta. -
Se você não especificar um formato, o sistema usará automaticamente
PARQUETcomo formato padrão para os dados. -
Todas as outras propriedades seguem a mesma sintaxe das tabelas normais do Iceberg.
Antes de criar o Tabelas do S3 usando CTAS, verifique se você tem as permissões necessárias configuradas no IAM ou no AWS Lake Formation. Especificamente, você precisa de permissões para criar tabelas no catálogo de tabelas do S3. Sem essas permissões, suas operações CTAS não terão sucesso.
nota
Se a consulta CTAS não tiver sucesso, poderá ser necessário excluir a tabela usando a API de tabelas do S3 antes de tentar executar a consulta novamente. Não é possível usar as instruções DROP TABLE do Athena para remover a tabela que foi parcialmente criada pela consulta.
Exemplo
CREATE TABLE "s3tablescatalog/amzn-s3-demo-bucket"."namespace"."s3-table-name" WITH ( format = 'PARQUET' ) AS SELECT * FROMsource_table;