Solucionar 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.
Tópicos
- CREATE TABLE AS SELECT (CTAS)
- Problemas no arquivo de dados
- Tabelas do Linux Foundation Delta Lake
- Consultas federadas
- Erros relacionados ao JSON
- MSCK REPAIR TABLE
- Problemas de saída
- Problemas do Parquet
- Problemas de particionamento
- Permissões
- Problemas de sintaxe da consulta
- Problemas de tempo limite de consulta
- Problemas de controle de utilização
- Visões
- Grupos de trabalho
- Recursos adicionais
- Catálogo de erros do Athena
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:
-
O tipo de dados definido na tabela não corresponde aos dados de origem ou um único campo contém tipos de dados diferentes. Para ver as resoluções sugeridas, consulte My Amazon Athena query fails with the error “HIVE_BAD_DATA: Error parsing field value for field x: For input string: ‘12312845691’”
(Minha consulta do Amazon Athena falha com o erro “HIVE_BAD_DATA: erro ao analisar o valor do campo x: para a string de entrada: ‘12312845691’”) na Central de Conhecimento da AWS. -
Há valores nulos em um campo de número inteiro. Uma solução alternativa é criar a coluna com os valores nulos como
string
e usarCAST
para converter o campo em uma consulta especificando um valor padrão de0
para nulos. Para obter mais informações, consulte When I query CSV data in Athena, I get the error “HIVE_BAD_DATA: Error parsing field value “ for field x: For input string: ”””(Quando consulto dados CSV no Athena, aparece o erro “HIVE_BAD_DATA: erro ao analisar o valor do campo x: para a string de entrada: ‘’') na Central de Conhecimento da AWS.
HIVE_CANNOT_OPEN_SPLIT: erro ao abrir divisão do Hive s3://amzn-s3-demo-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 Como resolver o erro "HIVE_CANNOT_OPEN_SPLIT: Error opening Hive split s3://amzn-s3-demo-bucket/: Slow down" no Athena?
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?
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 e consultas recentes 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:
-
No AWS Glue, execute o crawler do AWS Glue.
-
No Athena, descarte a tabela e torne a criá-la.
-
Adicione manualmente as colunas que estiverem faltando, usando a instrução ALTER TABLE ADD COLUMNS no Athena ou editando o esquema da tabela no AWS Glue.
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 usarStartQueryExecution
como alternativa aListTableMetadata
. Os exemplos da AWS CLI a seguir mostram comoStartQueryExecution
pode ser usado em vez deListTableMetadata
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
Erros relacionados ao JSON
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
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?
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
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
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?
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
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?
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
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
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: "
. 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.number
-number
"
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 cada tabela no AWS Glue Data Catalog que tenha colunas de partição, o esquema é armazenado no nível de tabela e para cada partição individual dentro da tabela. O esquema de partições é preenchido por um crawler do AWS Glue com base no exemplo de dados lido dentro da partição.
Quando o Athena executa uma consulta, ela valida o esquema da tabela e o esquema de todas as partições necessárias para a consulta. A validação compara os tipos de dados da coluna em ordem e verifica se eles correspondem às colunas que se sobrepõem. Isso evita operações inesperadas, como adicionar ou remover colunas no meio de uma tabela. Se o Athena detectar que o esquema de uma partição é diferente do esquema da tabela, o Athena talvez não possa processar a consulta e emita uma falha com HIVE_PARTITION_SCHEMA_MISMATCH
.
Existem algumas maneiras de corrigir esse problema. Primeiro, se os dados tiverem sido adicionados acidentalmente, você poderá remover os arquivos de dados que causam a diferença no esquema, ignorar a partição e rastrear novamente os dados. Segundo, você pode descartar a partição individual e executar MSCK REPAIR
no Athena para recriá-la usando o esquema da tabela. Essa segunda opção só funcionará se você tiver certeza de que o esquema aplicado continuará lendo os dados corretamente.
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?
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
no Amazon S3. Você precisa remover esses arquivos manualmente.partition_value
_$folder$
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
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
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:
se as seguintes condições forem verdadeiras:<request_id>
)
-
Execute uma consulta DDL, como
ALTER TABLE ADD PARTITION
ouMSCK REPAIR TABLE
. -
Você tem um bucket com a criptografia padrão configurada para usar
SSE-S3
. -
O bucket também tem uma política como a seguinte que força as solicitações
PutObject
a especificar os cabeçalhosPUT
"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
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?
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?
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 dadosarray
. -
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 dados
BYTE
. O tipo de dadoBYTE
é equivalente aTINYINT
.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?
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?
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?
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 ter mais informações, consulte Consultar logs do AWS CloudTrail e Registrar em log as 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 |
|
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 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?
Grupos de trabalho
Para obter informações sobre como solucionar problemas de grupos de trabalho, consulte Solucionar erros de grupo de trabalho.
Recursos adicionais
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