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:
- Abra o console do AWS Glue.
- Escolha o nome da tabela na lista e escolha Editar esquema.
- Escolha Adicionar coluna.
- Insira o nome, o tipo e o número da coluna. Em seguida, marque a caixa Chave de partição.
- Escolha Adicionar.
Para mais informações, consulte Exibir e editar detalhes da tabela.