Solução de problemas no Athena - Amazon Athena

Solução de problemas no Athena

A equipe do Athena reuniu as seguintes informações de solução de problemas dos clientes. Elas não abrangem tudo, mas incluem orientações sobre alguns problemas comuns de performance, tempo limite e falta de memória.

CREATE TABLE AS SELECT (CTAS)

Dados duplicados ocorrem com instruções CTAS simultâneas

O Athena não mantém a validação simultânea de CTAS. Verifique se não há instruções CTAS duplicadas para o mesmo local ao mesmo tempo. Mesmo se uma instrução CTAS ou INSERT INTO falhar, os dados órfãos podem permanecer no local de dados especificado na instrução.

HIVE_TOO_MANY_OPEN_PARTITIONS

Ao usar uma instrução CTAS para criar uma tabela com mais de 100 partições, você pode receber o erro HIVE_TOO_MANY_OPEN_PARTITIONS: Exceeded limit of 100 open writers for partitions/buckets (Limite excedido de 100 gravadores abertos para partições/buckets). Para contornar essa limitação, é possível usar uma instrução CTAS e uma série de instruções INSERT INTO que criam ou inserem até 100 partições cada. Para ter mais informações, consulte Usar CTAS e INSERT INTO para resolver o limite de 100 partições.

Problemas no arquivo de dados

O Athena não pode ler arquivos ocultos

O Athena trata os arquivos de origem que começam com sublinhado (_) ou ponto (.) como ocultos. Para contornar essa limitação, renomeie os arquivos.

O Athena lê arquivos que eu excluí do crawler do AWS Glue

O Athena não reconhece os padrões de exclusão que você especifica para um crawler do AWS Glue. Por exemplo, se você tem um bucket do Amazon S3 com os arquivos .csv e .json e exclui os arquivos .json do crawler, o Athena consulta os dois grupos de arquivos. Para evitar isso, coloque os arquivos que você deseja excluir em um local diferente.

HIVE_BAD_DATA: erro ao analisar o valor do campo

Esse erro pode ocorrer nos seguintes cenários:

HIVE_CANNOT_OPEN_SPLIT: erro ao abrir divisão do Hive s3://DOC-EXAMPLE-BUCKET

Esse erro pode ocorrer quando você consulta um prefixo de bucket do Amazon S3 que tenha um grande número de objetos. Para obter mais informações, consulte How do I resolve the "HIVE_CANNOT_OPEN_SPLIT: Error opening Hive split s3://DOC-EXAMPLE-BUCKET/: Slow down" error in Athena? no Centro de Conhecimentos da AWS.

HIVE_CURSOR_ERROR: com.amazonaws.services.s3.model.AmazonS3Exception: a chave especificada não existe

Geralmente, esse erro ocorre quando um arquivo é removido durante a execução de uma consulta. Execute novamente a consulta ou examine o fluxo de trabalho para ver se outro trabalho ou processo está modificando os arquivos durante a execução da consulta.

HIVE_CURSOR_ERROR: fim inesperado do stream de entrada

Essa mensagem indica que o arquivo está corrompido ou vazio. Verifique a integridade do arquivo e execute a consulta novamente.

HIVE_FILESYSTEM_ERROR: Incorrect fileSize 1234567 for file (HIVE_FILESYSTEM_ERROR: tamanho de arquivo 1234567 incorreto para o arquivo)

Essa mensagem pode ocorrer quando um arquivo foi alterado entre o planejamento da consulta e a execução da consulta. Geralmente ocorre quando um arquivo no Amazon S3 é substituído no local (por exemplo, um PUT é executado em uma chave em que um objeto já existe). O Athena não suporta a exclusão ou a substituição do conteúdo de um arquivo quando uma consulta está em execução. Para evitar esse erro, agende trabalhos que substituam ou excluam arquivos para quando consultas não são executadas ou simplesmente grave os dados em novos arquivos ou partições.

HIVE_UNKNOWN_ERROR: não é possível criar o formato de entrada

Esse erro pode ser resultado de problemas como estes:

  • O crawler do AWS Glue não conseguiu classificar o formato de dados

  • Certas propriedades de definição de tabela do AWS Glue estão vazias

  • O Athena não é compatível com o formato de dados dos arquivos no Amazon S3

Para obter mais informações, consulte Como resolvo o erro “não é possível criar o formato de entrada” no Athena? (em inglês) ou assista ao vídeo na Central de Conhecimento da AWS.

O local do S3 especificado para salvar os resultados das consultas é inválido.

Verifique se você especificou um local válido do S3 para os resultados das consultas. Para obter mais informações, consulte Especificar um local para resultados de consultasTrabalhar com resultados de consultas, consultas recentes e arquivos de saída no tópico.

Tabelas do Linux Foundation Delta Lake

O esquema das tabelas do Delta Lake não está sincronizado

Quando você consulta uma tabela do Delta Lake que tem um esquema no AWS Glue, pode receber a seguinte mensagem de erro:

INVALID_GLUE_SCHEMA: Delta Lake table schema in Glue does not match the most recent schema of the Delta Lake transaction log. Please ensure that you have the correct schema defined in Glue.

O esquema pode ficar desatualizado se for modificado no AWS Glue depois de ser adicionado ao Athena. Para atualizar o esquema, faça uma das etapas a seguir:

Consultas federadas

Tempo limite ao chamar ListTableMetadata

Uma chamada para a API ListTableMetadata pode atingir o tempo limite se houver muitas tabelas na fonte de dados, se a fonte de dados estiver lenta ou se a rede estiver lenta. Para solucionar esse problema, experimente as seguintes etapas:

  • Verifique o número de tabelas: se você tiver mais de 1.000 tabelas, tente reduzir esse número. Para uma resposta mais rápida de ListTableMetadata, recomendamos ter menos de 1000 tabelas por catálogo.

  • Verifique a configuração do Lambda — Monitorar o comportamento da função do Lambda é fundamental. Ao usar catálogos federados, examine os logs de execução da função do Lambda. Com base nos resultados, ajuste os valores de memória e tempo limite. Para identificar possíveis problemas de tempo limite, revise sua configuração do Lambda. Para obter mais informações, consulte Configurar o tempo de limite da função (console) no Guia do desenvolvedor do AWS Lambda.

  • Verifique os logs da fonte de dados federada — Examine os logs e as mensagens de erro da fonte de dados federada para ver se há algum problema ou erro. Os logs podem fornecer informações valiosas sobre a causa do tempo limite.

  • Use StartQueryExecution para buscar os metadados: se você tiver mais de 1.000 tabelas, recuperar os metadados usando o conector federado pode levar mais tempo que o esperado. Como a natureza assíncrona de StartQueryExecution garante que o Athena execute a consulta da maneira ideal, considere usar StartQueryExecution como alternativa a ListTableMetadata. Os exemplos da AWS CLI a seguir mostram como StartQueryExecution pode ser usado em vez de ListTableMetadata para obter todos os metadados das tabelas do catálogo de dados.

    Primeiro, execute uma consulta que obtenha todas as tabelas, como no exemplo a seguir.

    aws athena start-query-execution --region us-east-1 \ --query-string "SELECT table_name FROM information_schema.tables LIMIT 50" \ --work-group "your-work-group-name"

    Em seguida, recupere os metadados de uma tabela individual, como no exemplo a seguir.

    aws athena start-query-execution --region us-east-1 \ --query-string "SELECT * FROM information_schema.columns \ WHERE table_name = 'your-table-name' AND \ table_catalog = 'your-catalog-name'" \ --work-group "your-work-group-name"

    O tempo necessário para obter os resultados depende do número de tabelas do catálogo.

Para obter mais informações sobre como solucionar problemas de consultas federadas, acesse Common_Problems na seção awslabs/aws-athena-query-federation do GitHub ou consulte a documentação de cada conector de fonte de dados do Athena.

Erros de dados NULL ou incorretos ao tentar ler dados JSON

Os erros de dados NULL ou incorretos quando você tenta ler dados JSON podem ter diversas causas. Para identificar as linhas que estão causando erros quando você usa o OpenX SerDe, defina ignore.malformed.json como true. Registros malformados serão retornados como NULL. Para obter mais informações, consulte Recebo erros ao tentar ler dados JSON no Amazon Athena (em inglês) ou assista ao vídeo na Central de Conhecimento da AWS.

HIVE_BAD_DATA: erro ao analisar o valor do campo 0: java.lang.String não pode ser convertido em org.openx.data.jsonserde.json.JSONObject

O OpenX JSON SerDe gera esse erro quando não consegue analisar uma coluna em uma consulta do Athena. Isso poderá acontecer se você definir uma coluna como map ou struct, mas os dados subjacentes são, na verdade, string, int ou outro tipo primitivo.

HIVE_CURSOR_ERROR: Row is not a valid JSON object - JSONException: Duplicate key (HIVE_CURSOR_ERROR: a linha não é um objeto JSON válido - JSONException: chave duplicada)

Esse erro ocorre ao usar o Athena para consultar recursos de AWS Config que têm várias etiquetas com o mesmo nome com letras maiúsculas e minúsculas diferentes. A solução é executar CREATE TABLE usando WITH SERDEPROPERTIES 'case.insensitive'='false' e mapear os nomes. Para obter mais informações sobre case.insensitive e mapeamento, consulte Bibliotecas SerDe JSON. Para obter mais informações, consulte Como resolvo o erro “HIVE_CURSOR_ERROR: a linha não é um objeto JSON válido - JSONException: chave duplicada” ao ler arquivos do AWS Config no Athena? no Centro de Conhecimento da AWS.

Mensagens HIVE_CURSOR_ERROR com JSON formatado para impressão

As bibliotecas Hive JSON SerDe e OpenX JSON SerDe esperam que cada documento JSON esteja em uma única linha de texto, sem caracteres de terminação de linha separando os campos no registro. Se o texto JSON estiver formatado para impressão, você poderá receber uma mensagem de erro como HIVE_CURSOR_ERROR: Row is not a valid JSON Object (HIVE_CURSOR_ERROR: a linha não é um objeto JSON válido) ou HIVE_CURSOR_ERROR: JsonParseException: Unexpected end-of-input: expected close marker for OBJECT (HIVE_CURSOR_ERROR: JSONParseException: Fim de entrada inesperado: marcador de fechamento esperado para OBJECT) quando tentar consultar a tabela após criá-la. Para obter mais informações, consulte JSON Data Files (Arquivos de dados do JSON) na documentação do OpenX SerDe no GitHub.

Vários registros JSON retornam SELECT COUNT de 1

Se você usa OpenX JSON SerDe, verifique se os registros estão separados por um caractere de nova linha. Para obter mais informações, consulte A consulta SELECT COUNT no Amazon Athena retorna somente um registro, embora o arquivo JSON de entrada tenha vários registros (em inglês) na Central de Conhecimento da AWS.

Não é possível consultar uma tabela criada por um crawler do AWS Glue que usa um classificador JSON personalizado

O mecanismo do Athena não é compatível com classificadores JSON personalizados. Para resolver esse problema, crie uma nova tabela sem o classificador personalizado. Para transformar o JSON, você pode usar CTAS ou criar uma visualização. Por exemplo, se você trabalha com arrays, pode usar a opção UNNEST para nivelar o JSON. Outra opção é usar um trabalho ETL AWS Glue que aceita o classificador personalizado, converter os dados em parquet no Amazon S3 e consultá-los no Athena.

MSCK REPAIR TABLE

Para obter informações sobre problemas relacionados a MSCK REPAIR TABLE, consulte as seções Considerações e limitações e Solução de problemas da página MSCK REPAIR TABLE.

Problemas de saída

Não é possível verificar/criar bucket de saída

Esse erro poderá ocorrer se o local de resultados das consultas especificado não existir ou se as permissões apropriadas não estiverem presentes. Para obter mais informações, consulte How do I resolve the “unable to verify/create output bucket” error in Amazon Athena? (Como resolvo o erro “Não é possível verificar/criar bucket de saída” no Amazon Athena?) na Central de Conhecimento da AWS.

O resultado de TIMESTAMP é vazio

O Athena requer o formato de TIMESTAMP do Java. Para obter mais informações, consulte Quando consulto uma tabela no Amazon Athena, o resultado de TIMESTAMP é vazio (em inglês) na Central de Conhecimento da AWS.

Armazenar saída de consulta do Athena em um formato diferente de CSV

Por padrão, o Athena só gera arquivos de saída no formato CSV. Para gerar os resultados de uma consulta SELECT em outro formato, você pode usar a instrução UNLOAD. Para ter mais informações, consulte UNLOAD. Você também pode usar uma consulta do CTAS que usa a propriedade de tabela format para configurar o formato de saída. Ao contrário de UNLOAD, a técnica CTAS requer a criação de uma tabela. Para obter mais informações, consulte Como posso armazenar uma saída de consulta do Athena em um formato diferente de CSV, como um formato compactado? (em inglês) na Central de Conhecimento da AWS.

O local do S3 especificado para salvar os resultados das consultas é inválido

Você poderá receber essa mensagem de erro se o local do bucket de saída não estiver na mesma região onde você executa sua consulta. Para evitar isso, especifique um local de resultados de consulta na região onde você executa a consulta. Para obter as etapas, consulte Especificar um local para resultados de consultas.

Problemas do Parquet

org.apache.parquet.io.GroupColumnIO não pode ser convertido em org.apache.parquet.io.PrimitiveColumnIO

Esse erro é causado por uma incompatibilidade de esquema do parquet. Uma coluna com um tipo não primitivo (por exemplo, array) foi declarado como um tipo primitivo (por exemplo, string) no AWS Glue. Para solucionar esse problema, verifique o esquema de dados nos arquivos e compare-o com o esquema declarado no AWS Glue.

Problemas estatísticos do Parquet

Quando você lê dados Parquet, pode receber mensagens de erro como as seguintes:

HIVE_CANNOT_OPEN_SPLIT: Index x out of bounds for length y HIVE_CURSOR_ERROR: Failed to read x bytes HIVE_CURSOR_ERROR: FailureException at Malformed input: offset=x HIVE_CURSOR_ERROR: FailureException at java.io.IOException: can not read class org.apache.parquet.format.PageHeader: Socket is closed by peer.

Para contornar esse problema, use a instrução CREATE TABLE ou ALTER TABLE SET TBLPROPERTIES para definir a parquet.ignore.statistics propriedade Parquet SerDe como true, como nos exemplos a seguir.

Exemplo de CREATE TABLE

... ROW FORMAT SERDE 'org.apache.hadoop.hive.ql.io.parquet.serde.ParquetHiveSerDe' WITH SERDEPROPERTIES ('parquet.ignore.statistics'='true') STORED AS PARQUET ...

Exemplo de ALTER TABLE

ALTER TABLE ... SET TBLPROPERTIES ('parquet.ignore.statistics'='true')

Para obter mais informações sobre o Parquet Hive SerDe, consulte Parquet SerDe.

Problemas de particionamento

MSCK REPAIR TABLE não remove partições obsoletas

Se você excluir uma partição manualmente no Amazon S3 e executar MSCK REPAIR TABLE, poderá receber a mensagem de erro Partições ausentes do sistema de arquivos. Isso ocorre porque MSCK REPAIR TABLE não remove as partições obsoletas dos metadados da tabela. Use ALTER TABLE DROP PARTITION para remover as partições obsoletas manualmente. Para obter mais informações, consulte a seção “Solução de problemas” do tópico MSCK REPAIR TABLE.

Falha em MSCK REPAIR TABLE

Quando uma grande quantidade de partições (por exemplo, mais de 100.000) são associadas a uma tabela específica, pode haver falha em MSCK REPAIR TABLE devido às limitações de memória. Para contornar esse limite, use ALTER TABLE ADD PARTITION no lugar dele.

MSCK REPAIR TABLE detecta partições, mas não as adiciona ao AWS Glue

Esse problema poderá ocorrer se um caminho do Amazon S3 estiver em maiúsculas e minúsculas, em vez de apenas minúsculas, ou se uma política do IAM não permitir a ação glue:BatchCreatePartition. Para obter mais informações, consulte MSCK REPAIR TABLE detecta partições no Athena, mas não as adiciona ao AWS Glue Data Catalog (em inglês) na Central de Conhecimento da AWS.

Os intervalos de projeção de partições com o formato de data dd-MM-yyyy-HH-mm-ss ou yyyy-MM-dd não funcionam

Para funcionar corretamente, o formato de data deve ser definido como yyyy-MM-dd HH:00:00. Para obter mais informações, consulte a publicação do Stack Overflow Athena Partition Projection Not Working As Expected (A projeção de partições do Athena não está funcionado como esperado).

PARTITITION BY não é compatível com o tipo BIGINT

Converta o tipo de dados em string e tente novamente.

Não há partições significativas disponíveis

Geralmente, essa mensagem de erro significa que as configurações de partição foram corrompidas. Para resolver esse problema, descarte a tabela e crie outra com novas partições.

A projeção de partições não funciona em conjunto com as partições do intervalo

Verifique se a unidade do intervalo de tempo projection.<columnName>.interval.unit corresponde ao delimitador das partições. Por exemplo, se as partições forem delimitadas por dias, uma unidade de intervalo de horas não funcionará.

Erro de projeção de partição quando o intervalo é especificado por hífen

Especificar a propriedade da tabela range com um hífen em vez de uma vírgula produz um erro como INVALID_TABLE_PROPERTY: For input string: "number-number". Certifique-se de que os valores do intervalo estejam separados por uma vírgula, não por um hífen. Para ter mais informações, consulte Tipo integer.

HIVE_UNKNOWN_ERROR: não é possível criar o formato de entrada

Uma ou mais das partições do Glue são declaradas em um formato diferente porque cada uma tem um formato próprio de entrada específico que é independente. Verifique como suas partições estão definidas no AWS Glue.

HIVE_PARTITION_SCHEMA_MISMATCH

Se o esquema de uma partição for diferente do esquema da tabela, uma consulta poderá falhar com a mensagem de erro HIVE_PARTITION_SCHEMA_MISMATCH. Para ter mais informações, consulte Sincronizar o esquema da partição para evitar “HIVE_PARTITION_SCHEMA_MISMATCH”.

A tabela SemanticException não foi particionada, mas a especificação da partição existe

Esse erro pode ocorrer quando não há partições definidas na instrução CREATE TABLE. Para obter mais informações, consulte Como solucionar o erro "FALHA: a tabela SemanticException não foi particionada, mas a especificação da partição existe" no Athena? (em inglês) na Central de Conhecimento da AWS.

Arquivos de zero byte no formato _$folder$

Se você executar uma instrução ALTER TABLE ADD PARTITION e especificar erroneamente uma partição que já existe e uma localização incorreta do Amazon S3, serão criados arquivos de espaço reservado de zero byte do formato partition_value_$folder$ no Amazon S3. Você precisa remover esses arquivos manualmente.

Para evitar que isso aconteça, use a sintaxe ADD IF NOT EXISTS em sua instrução ALTER TABLE ADD PARTITION, assim:

ALTER TABLE table_name ADD IF NOT EXISTS PARTITIION […]

Zero registro retornado dos dados particionados

Esse problema pode ocorrer por vários motivos. Para saber as causas possíveis e as resoluções, consulte Criei uma tabela no Amazon Athena com partições definidas, mas quando consulto a tabela, zero registro é retornado (em inglês) na Central de Conhecimento da AWS.

Consulte também HIVE_TOO_MANY_OPEN_PARTITIONS.

Permissões

Erro de acesso negado ao consultar o Amazon S3

Isso pode ocorrer quando você não tem permissão para ler os dados no bucket, permissão para gravar no bucket de resultados ou o caminho do Amazon S3 contém um endpoint de região como us-east-1.amazonaws.com. Para obter mais informações, consulte When I run an Athena query, I get an “access denied” error (Quando executo uma consulta do Athena, recebo um erro “Acesso negado”) na Central de Conhecimento da AWS.

Acesso negado com o erro de código de status 403 ao executar consultas DDL em dados criptografados no Amazon S3

Você poderá receber a mensagem de erro Acesso negado (serviço: Amazon S3; código de status: 403; código de erro: AccessDenied; ID da solicitação: <request_id>) se as seguintes condições forem verdadeiras:

  1. Execute uma consulta DDL, como ALTER TABLE ADD PARTITION ou MSCK REPAIR TABLE.

  2. Você tem um bucket com a criptografia padrão configurada para usar SSE-S3.

  3. O bucket também tem uma política como a seguinte que força as solicitações PutObject a especificar os cabeçalhos PUT "s3:x-amz-server-side-encryption": "true" e "s3:x-amz-server-side-encryption": "AES256".

    { "Version": "2012-10-17", "Statement": [ { "Effect": "Deny", "Principal": "*", "Action": "s3:PutObject", "Resource": "arn:aws:s3:::<resource-name>/*", "Condition": { "Null": { "s3:x-amz-server-side-encryption": "true" } } }, { "Effect": "Deny", "Principal": "*", "Action": "s3:PutObject", "Resource": "arn:aws:s3:::<resource-name>/*", "Condition": { "StringNotEquals": { "s3:x-amz-server-side-encryption": "AES256" } } } ] }

Nesse caso, a solução recomendada é remover a política de bucket, como a que foi mostrada acima, quando a criptografia padrão do bucket já está presente.

Acesso negado com código de status 403 ao consultar um bucket do Amazon S3 em outra conta

Esse erro pode ocorrer quando você tenta consultar logs escritos por outro AWS service (Serviço da AWS) e a segunda conta é o proprietária do bucket, mas não tem os objetos no bucket. Para obter mais informações, consulte I get the Amazon S3 exception “access denied with status code: 403” in Amazon Athena when I query a bucket in another account (Vejo a exceção do Amazon S3 “Acesso negado com código de status: 403” no Amazon Athena quando consulto um bucket em outra conta) ou assista ao vídeo na Central de Conhecimento da AWS.

Usar credenciais de função do IAM para se conectar ao driver JDBC do Athena

Você pode recuperar as credenciais temporárias de uma função para autenticar o conector JDBC ao Athena. As credenciais temporárias têm uma vida útil máxima de 12 horas. Para obter mais informações, consulte Como posso usar minhas credenciais de função do IAM ou alternar para outra função do IAM ao me conectar ao Athena usando o driver JDBC? (em inglês) na Central de Conhecimento da AWS.

Problemas de sintaxe da consulta

FAILED: NullPointerException name is null (FALHA: o nome de NullPointerException é nulo)

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ê.

Função não registrada

Esse erro ocorre quando você tenta usar uma função que o Athena não permite. Para ver a lista de funções permitidas pelo Athena, consulte Funções no Amazon Athena ou execute a instrução SHOW FUNCTIONS no editor de consultas. Você também pode escrever sua própria User Defined Function (UDF – Função definida pelo usuário). Para obter mais informações, consulte Como resolver o erro de sintaxe “função não registrada” no Athena? (em inglês) na Central de Conhecimento da AWS.

Exceções GENERIC_INTERNAL_ERROR

As exceções GENERIC_INTERNAL_ERROR podem ter várias causas, incluindo as seguintes:

  • GENERIC_INTERNAL_ERROR: Null (GENERIC_INTERNAL_ERROR: nulo): você pode ver essa exceção em qualquer uma das seguintes condições:

    • Existe discrepância de esquema entre o tipo de dados de uma coluna na definição de tabela e o tipo de dados real do conjunto de dados.

    • Você está executando uma consulta (CTAS) CREATE TABLE AS SELECT com uma sintaxe inexata.

  • GENERIC_INTERNAL_ERROR: parent builder is null (GENERIC_INTERNAL_ERROR: o criador pai é nulo): você pode ver essa exceção quando consulta uma tabela de colunas com tipo de dado array e está usando a biblioteca OpenCSVSerde. O formato OpenCSVSerde não suporta o tipo de dados array.

  • GENERIC_INTERNAL_ERROR: Value exceeds MAX_INT (GENERIC_INTERNAL_ERROR: o valor excede MAX_INT): você pode ver essa exceção quando a coluna de dados de origem é definida com o tipo de dados INT e tem um valor numérico maior que 2.147.483.647.

  • GENERIC_INTERNAL_ERROR: Value exceeds MAX_BYTE (GENERIC_INTERNAL_ERROR: o valor excede MAX_BYTE): você pode ver essa exceção quando a coluna de dados de origem tem um valor numérico que excede o tamanho permitido para o tipo de dadosBYTE. O tipo de dado BYTE é equivalente a TINYINT. TINYINT é um número inteiro com sinal de 8 bits no formato de complemento de dois com um valor mínimo de -128 e um valor máximo de 127.

  • GENERIC_INTERNAL_ERROR: Number of partition values does not match number of filters (GENERIC_INTERNAL_ERROR: o número de partições não corresponde ao número de filtros): você pode ver essa exceção se tiver partições inconsistentes nos dados do Amazon Simple Storage Service (Amazon S3). Você pode ter partições inconsistentes em qualquer uma das seguintes condições:

    • As partições no Amazon S3 foram alteradas (exemplo: novas partições foram adicionadas).

    • O número de colunas de partição na tabela não corresponde às dos metadados da partição.

Para obter informações mais detalhadas sobre cada um desses erros, consulte How do I resolve the error “GENERIC_INTERNAL_ERROR" when I query a table in Amazon Athena? na Central de Conhecimento da AWS.

O número de grupos correspondentes não corresponde ao número de colunas

Esse erro ocorre ao usar Regex SerDe em uma instrução CREATE TABLE e o número de grupos correspondentes de regex não corresponde ao número de colunas que você especificou para a tabela. Para obter mais informações, consulte How do I resolve the RegexSerDe error “number of matching groups doesn't match the number of columns” in Amazon Athena? (Como resolvo o erro RegexSerDe “O número de grupos correspondentes não corresponde ao número de colunas” no Amazon Athena?) na Central de Conhecimento da AWS.

queryString não atende à restrição: o tamanho do membro deve ser menor ou igual a 262144

O tamanho máximo da string de consulta no Athena (262.144 bytes) não é uma cota ajustável. O AWS Support não pode aumentar a cota para você, mas você pode tentar resolver o problema dividindo as consultas longas em tamanhos menores. Para obter mais informações, consulte Como posso aumentar o tamanho máximo da string de consulta no Athena? (em inglês) na Central de Conhecimento da AWS.

SYNTAX_ERROR: a coluna não pode ser resolvida

Esse erro pode ocorrer quando você consulta uma tabela criada por um crawler do AWS Glue de um arquivo CSV codificado em UTF-8 que tem uma Byte Order Mark (BOM – Marca de ordem de byte). O AWS Glue não reconhece as BOMs e as altera para pontos de interrogação, que o Amazon Athena não reconhece. A solução é remover o ponto de interrogação no Athena ou no AWS Glue.

Excesso de argumentos para chamada de função

No mecanismo Athena versão 3, as funções não podem receber mais de 127 argumentos. Essa limitação é proposital. Se você usar uma função com mais de 127 parâmetros, ocorrerá uma mensagem de erro como esta:

TOO_MANY_ARGUMENTS: linha nnn:nn: excesso de argumentos para a chamada da função function_name().

Para resolver esse problema, utilize menos parâmetros por chamada de função.

Problemas de tempo limite de consulta

Se você tiver erros de tempo limite nas suas consultas do Athena, verifique os logs do CloudTrail. O tempo limite das consultas pode ser atingido devido ao controle de utilização das APIs do AWS Glue ou do Lake Formation. Quando esses erros ocorrem, as mensagens de erro correspondentes podem indicar um problema de tempo limite de consulta em vez de um problema de controle de utilização. Para solucionar o problema, você pode verificar os logs do CloudTrail antes de entrar em contato com o AWS Support. Para obter mais informações, consulte Consultar os logs do AWS CloudTrail e Registro de chamadas de API do Amazon Athena com o AWS CloudTrail.

Vaja informações sobre problemas de tempo limite de consulta com as consultas federadas quando você chama a API ListTableMetadata em Tempo limite ao chamar ListTableMetadata.

Problemas de controle de utilização

Se suas consultas excederem os limites dos serviços dependentes, como o Amazon S3, AWS KMS, AWS Glue ou AWS Lambda, as mensagens a seguir podem ser esperadas. Para resolver esses problemas, reduza o número de chamadas simultâneas originadas da mesma conta.

Serviço Mensagem de erro
AWS Glue AWSGlueException: Rate exceeded. (AWSGlueException: Taxa excedida)
AWS KMS Você excedeu a taxa na qual pode chamar o KMS. Reduza a frequência de suas chamadas.
AWS Lambda

Rate exceeded (Taxa excedida)

TooManyRequestsException

Amazon S3 AmazonS3Exception: Please reduce your request rate. (AmazonS3Exception: Reduza sua taxa de solicitação.)

Para obter informações sobre formas de evitar o controle de utilização do Amazon S3 ao usar o Athena, consulte Como prevenir o controle de utilização do Amazon S3.

Visões

Visualizações criadas no shell do Apache Hive não funcionam no Athena

Devido a suas implementações fundamentalmente diferentes, as visualizações criadas no shell do Apache Hive não são compatíveis com o Athena. Para resolver esse problema, recrie as visualizações no Athena.

A visualização é obsoleta e deve ser recriada

Você pode receber esse erro se a tabela subjacente a uma visualização foi alterada ou descartada. A resolução é recriar a visualização. Para obter mais informações, consulte How can I resolve the “view is stale; it must be re-created” error in Athena? (Como posso resolver o erro “A visualização é obsoleta e deve ser recriada” no Athena?) na Central de Conhecimento da AWS.

Grupos de trabalho

Para obter informações sobre como solucionar problemas de grupos de trabalho, consulte Resolver problemas nos grupos de trabalho.

Recursos adicionais do

As páginas a seguir apresentam mais informações para solucionar problemas com o Amazon Athena.

Os seguintes recursos da AWS também podem ajudar:

Geralmente, a solução de problemas requer consulta e descoberta iterativas por um especialista ou de uma comunidade de ajudantes. Se continuar a enfrentar problemas após tentar as sugestões nesta página, entre em contato com o AWS Support (no AWS Management Console, clique em Support (Suporte), Support Center (Central de Suporte)) ou faça uma pergunta no AWS re:Post usando a etiqueta Amazon Athena.