Get Hands-on with Amazon EKS - Workshop Event Series
Whether you're taking your first steps with Kubernetes or you're an experienced practitioner looking to sharpen your skills, our Amazon EKS workshop series delivers practical, real-world experience that moves you forward. Learn directly from AWS solutions architects and EKS specialists through hands-on sessions designed to build your confidence with Kubernetes. Register now and start building with Amazon EKS!
Como resolvo o erro "GENERIC_INTERNAL_ERROR" ao consultar uma tabela no Athena?
Quando consulto minha tabela do Amazon Athena, recebo o erro "GENERIC_INTERNAL_ERROR".
Resolução
"GENERIC_INTERNAL_ERROR: null"
Incompatibilidade de tipos de dados de coluna
Certifique-se de que o tipo de dados de coluna na definição da tabela seja compatível com o tipo de dados de coluna nos dados de origem. O Athena usa a tecnologia de esquema na leitura. Quando o Athena processa as consultas, ele aplica suas definições de tabela aos seus dados no Amazon Simple Storage Service (Amazon S3).
Por exemplo, quando você cria uma tabela em um arquivo Apache Parquet, o Athena lê o esquema do arquivo. Em seguida, o Athena valida o esquema em relação à definição da tabela em que consulta o Parquet. Se o tipo de dados de uma coluna não corresponder ao tipo de dados da definição da tabela, você receberá o erro "Column data type mismatch".
Se houver uma incompatibilidade de esquema entre os arquivos de dados de origem e a definição da tabela, execute uma das seguintes ações:
- Use o AWS Glue para atualizar o esquema.
- Use a definição de tabela atualizada para criar uma nova tabela.
Além disso, verifique se os arquivos de dados de origem estão corrompidos. Se você encontrar arquivos de dados de origem corrompidos, exclua-os e consulte a tabela.
Sintaxe imprecisa
Você pode receber o erro "GENERIC INTERNAL ERROR: null" quando as duas condições a seguir forem verdadeiras:
- Você usou uma consulta CTAS para criar a tabela.
- Você usou o mesmo nome de coluna para as propriedades de tabela partitioned_by e bucketed_by.
Ao usar a consulta CTAS, você deve usar nomes de coluna diferentes para as propriedades partitioned_by e bucketed_by. Para resolver esse problema, crie uma nova tabela e escolha nomes de coluna diferentes para partitioned_by e bucketed_by.
"GENERIC_INTERNAL_ERROR: parent builder is null"
Talvez você veja esse erro ao consultar uma tabela que tenha colunas array e o formato OpenCSVSerde. O formato OpenCSVSerde não oferece suporte ao tipo de dados array.
Para resolver esse problema, altere a coluna com o tipo de dados array para string. É possível usar o console do AWS Glue ou executar um comando para modificar o tipo de dados da coluna. Ou crie uma nova tabela.
Modificar o tipo de dados de coluna
Para usar o console do AWS Glue, conclua as seguintes etapas:
- Abra o console do AWS Glue.
- No painel de navegação, selecione Tabelas.
- Selecione a tabela que você deseja atualizar.
- Escolha Ações e depois Exibir detalhes.
- Escolha Editar esquema.
- Encontre a coluna com o tipo de dados array e escolha array.
- Em Tipo de coluna, selecione string na lista suspensa.
- Selecione Atualizar.
- Na página Editar esquema, escolha Salvar.
-ou-
Execute o comando SHOW CREATE TABLE para gerar a consulta que criou a tabela. Encontre a coluna com o tipo de dados array e altere o tipo de dados para string.
Criar uma nova tabela
Crie uma nova tabela e escolha string para o tipo de dados de coluna.
"GENERIC_INTERNAL_ERROR: Value exceeds MAX_INT"
Você pode ver esse erro quando uma célula em uma coluna INT de origem tem um valor numérico maior que 2.147.483.647.
Para resolver esse problema, altere a coluna com o tipo de dados int para bigint. É possível usar o console do AWS Glue ou executar um comando para modificar o tipo de dados da coluna. Ou crie uma nova tabela.
Modificar o tipo de dados de coluna
Para usar o console do AWS Glue, conclua as seguintes etapas:
- Abra o console do AWS Glue.
- No painel de navegação, selecione Tabelas.
- Selecione a tabela que você deseja atualizar.
- Escolha Ações e depois Exibir detalhes.
- Escolha Editar esquema.
- Encontre a coluna com o tipo de dados int e escolha int.
- Em Tipo de coluna, selecione bigint na lista suspensa.
- Selecione Atualizar.
- Na página Editar esquema, escolha Salvar.
-ou-
Execute o comando SHOW CREATE TABLE para gerar a consulta que criou a tabela. Encontre a coluna com o tipo de dados int e altere o tipo de dados para bigint.
Criar uma nova tabela
Crie uma nova tabela e escolha bigint para o tipo de dados de coluna.
"GENERIC_INTERNAL_ERROR: Value exceeds MAX_BYTE"
Você pode ver esse erro quando uma célula em uma coluna TINYINT de origem tem um valor numérico que não é válido. O valor mínimo de uma coluna TINYINT é -128 e seu valor máximo é 127.
Para resolver esse problema, altere a coluna com o tipo de dados tinyint para smallint, int ou bigint. É possível usar o console do AWS Glue ou executar um comando para modificar o tipo de dados da coluna. Ou crie uma nova tabela.
Modificar o tipo de dados de coluna
Para usar o console do AWS Glue, conclua as seguintes etapas:
- Abra o console do AWS Glue.
- No painel de navegação, selecione Tabelas.
- Selecione a tabela que você deseja atualizar.
- Escolha Ações e depois Exibir detalhes.
- Escolha Editar esquema.
- Encontre a coluna com o tipo de dados tinyint e escolha tinyinit.
- Em Tipo de coluna, selecione smallint, bigint ou int na lista suspensa.
- Selecione Atualizar.
- Na página Editar esquema, escolha Salvar.
-ou-
Execute o comando SHOW CREATE TABLE para gerar a consulta que criou a tabela. Encontre a coluna com o tipo de dados tinyint e altere o tipo de dados para smallint, bigint ou int.
Criar uma nova tabela
Crie uma nova tabela e escolha smallint, bigint ou int para o tipo de dados de coluna.
"GENERIC_INTERNAL_ERROR: Number of partition values does not match number of filters"
Você pode ver esse erro quando tiver partições inconsistentes nos dados do Amazon S3 por um dos seguintes motivos:
- Você alterou suas partições do S3. Por exemplo, você adicionou novas partições.
- O número de colunas de partição na tabela não corresponde ao número de colunas de partição nos metadados da partição.
Para resolver esse problema, é possível configurar um crawler do AWS Glue para criar uma nova tabela. Ou use a declaração ALTER TABLE DROP PARTITION para descartar as partições. Em seguida, use a declaração ALTER TABLE ADD PARTITION para adicionar o mesmo número de partições que na definição da tabela.
Por exemplo, você tem colunas de partição que são denominadas date e country na definição da tabela e uma partição que tem somente uma coluna chamada date. Descarte a partição com a coluna date e, em seguida, adicione as partições date e country à tabela.
Exemplos de comandos:
ALTER TABLE doc_example_table DROP PARTITION (date = '2014-05-14'); ALTER TABLE doc_example_table ADD PARTITION (date = '2016-05-14', country = 'IN');
"GENERIC_INTERNAL_ERROR: Multiple entries with same key"
Se você tiver colunas com o mesmo nome, deverá pré-processar os dados para incluir um par de valores-chave válido. Para ignorar colunas com o mesmo nome, defina ignore.malformed.json como SERDEPROPERTIES em org.openx.data.jsonserde.JsonSerDe.
O Apache Hive não oferece suporte a colunas com distinção entre maiúsculas e minúsculas. Por exemplo, você pode enfrentar um problema ao ter duas colunas denominadas Column e column.
Se os nomes das colunas forem iguais, mas com fontes diferentes, você deverá usar o mapeamento e configurar o JSON SerDe para não diferenciar maiúsculas de minúsculas.
Exemplo de comando:
CREATE TABLE mytable ( time1 string, time2 string) ROW FORMAT SERDE 'org.openx.data.jsonserde.JsonSerDe' WITH SERDEPROPERTIES ( "case.insensitive" = "false", --tells hive to ignore key case "mapping.time1"= "time", -- lowercase 'time' mapped into 'time1' "mapping.time2"= "Time") -- uppercase to 'time2'
Informações relacionadas
- Tópicos
- Analytics
- Tags
- Amazon Athena
- Idioma
- Português

Conteúdo relevante
- feita há um ano
- feita há 5 meses
- feita há 6 meses