Como posso solucionar o erro “FAILED: SemanticException table is not partitioned but partition spec exists” (FALHA: a tabela SemanticException não está particionada, mas existe uma especificação de partição) no Athena?

2 minuto de leitura
0

Quando executo ALTER TABLE ADD PARTITION no Amazon Athena, aparece o erro: “FAILED: SemanticException table is not partitioned but partition spec exists” (FALHA: a tabela SemanticException não está particionada, mas existe uma especificação de partição).

Resolução

Esse erro acontece quando você não define nenhuma partição na instrução CREATE TABLE. Para resolvê-lo, execute uma das seguintes ações:

  • Crie a tabela novamente e use PARTIONED BY para definir a chave de partição.
  • Edite o esquema da tabela.

Crie a tabela novamente

Crie a tabela novamente e use PARTITIONED BY para definir a chave de partição. Para ver um exemplo, acesse Criar a tabela. Depois de definir a partição, você poderá usar ALTER TABLE ADD PARTITION para adicionar mais partições.

Por exemplo, se estiver usando a seguinte linguagem de definição de dados (DDL) para criar a tabela com três partições para ano, mês e dia:

CREATE EXTERNAL TABLE test (
requestBeginTime string,
adId string,
...)
PARTITIONED BY (
year string,
month string,
day string
)
ROW FORMAT serde 'org.apache.hive.hcatalog.data.JsonSerDe'
LOCATION 's3://.../' ;

Então, adicione partições semelhantes às seguintes:

ALTER TABLE impressions ADD
PARTITION (year = '2016', month = '05', day='04') LOCATION 's3://mystorage/path/to/data\_14\_May\_2016/';

Edite o esquema da tabela

Para editar o esquema da tabela no AWS Glue, execute as seguintes etapas:

  1. Abra o console do AWS Glue.
  2. Escolha o nome da tabela na lista e escolha Editar esquema.
  3. Escolha Adicionar coluna.
  4. Insira o nome, o tipo e o número da coluna. Em seguida, marque a caixa Chave de partição.
  5. Escolha Adicionar.

Para mais informações, consulte Exibir e editar detalhes da tabela.

AWS OFICIAL
AWS OFICIALAtualizada há um ano