Criar tabelas no Athena - Amazon Athena

Criar tabelas no Athena

Para criar tabelas, é possível executar instruções DDL no console do Athena, usar o formulário Create table (Criar tabela) do Athena ou usar um driver JDBC ou ODBC. O Athena usa o Apache Hive para definir tabelas e criar bancos de dados, que são basicamente um namespace lógico de tabelas. O Athena oferece suporte a uma variedade de bibliotecas de serializador-desserializador (SerDe) para criação de tabelas para formatos de dados específicos. Para obter uma lista de bibliotecas SerDe compatíveis, consulte Escolha de um SerDe para seus dados.

Ao criar um banco de dados e uma tabela no Athena, você apenas descreve o esquema e o local onde os dados da tabela estão localizados no Amazon S3 para consulta em tempo de leitura. O Athena não modifica os dados no Amazon S3. Por isso, o banco de dados e a tabela têm um significado um pouco diferente do que o de sistemas de bancos de dados relacionais tradicionais porque os dados não são armazenados com a definição de esquema para o banco de dados e a tabela.

O Athena armazena o esquema no AWS Glue Data Catalog e o utiliza para ler os dados quando você consulta a tabela usando SQL. Essa abordagem de esquema na leitura, que projeta um esquema em seus dados quando você executa uma consulta, elimina a necessidade de carregamento ou transformação de dados.

Considerações e limitações

Estas são algumas limitações e considerações importantes sobre as tabelas no Athena.

Considerações sobre o Amazon S3

Ao criar uma tabela, você especifica o local de um bucket do Amazon S3 para os dados subjacentes usando a cláusula LOCATION. Considere o seguinte:

Para obter mais informações sobre como especificar um local para seus dados no Amazon S3, consulte Especificar um local de tabela no Amazon S3.

Outras considerações

  • Não há suporte a transformações de dados transacionais: o Athena não permite operações baseadas em transações (como as disponíveis no Hive ou no Presto) nos dados de tabelas. Para obter uma lista completa de palavras-chave não compatíveis, consulte DDL incompatível.

  • As operações em tabelas são ACID: quando você cria, atualiza ou exclui tabelas, essas operações têm compatibilidade com ACID garantida. Por exemplo, se vários usuários ou clientes tentarem criar ou alterar uma tabela existente ao mesmo tempo, somente um será bem-sucedido.

  • As tabelas são EXTERNAL: exceto ao criar tabelas do Iceberg, use sempre a palavra-chave EXTERNAL. Se você usar CREATE TABLE sem a palavra-chave EXTERNAL para tabelas que não são do Iceberg, o Athena emitirá um erro. Quando você descarta uma tabela no Athena, apenas os metadados da tabela são removidos, os dados permanecem no Amazon S3.

  • Comprimento máximo de string de consulta: o tamanho máximo da string de consulta é 256 KB.

  • Se você usar a operação de API do AWS Glue CreateTable ou o modelo AWS::Glue::Table do AWS CloudFormation para criar uma tabela para uso no Athena sem especificar a propriedade TableType e, depois, executar uma consulta DDL, como SHOW CREATE TABLE ou MSCK REPAIR TABLE, poderá receber a mensagem de erro FALHA: o nome de NullPointerException é nulo.

    Para resolver o erro, especifique um valor para o atributo TableInput TableType como parte da chamada de API CreateTable do AWS Glue ou do modelo do AWS CloudFormation. Os valores possíveis para TableType são EXTERNAL_TABLE ou VIRTUAL_VIEW.

    Esse requisito é aplicado somente quando você cria uma tabela usando a operação de API do AWS Glue CreateTable ou o modelo do AWS::Glue::Table. Se você criar uma tabela do Athena usando uma instrução DDL ou um crawler do AWS Glue, a propriedade TableType será definida automaticamente para você.