Por que minha consulta MSCK REPAIR TABLE não adiciona partições ao catálogo de dados do AWS Glue?

3 minuto de leitura
0

Quando executo minha consulta MSCK REPAIR TABLE, o Amazon Athena retorna uma lista de partições. No entanto, o Athena não consegue adicionar as partições à tabela no catálogo de dados do AWS Glue.

Breve descrição

Os seguintes motivos comuns fazem com que o Athena não adicione partições às tabelas no Catálogo de Dados:

  • O usuário ou função do AWS Identity and Access Management (IAM) não tem uma política que permita a ação glue:BatchCreatePartition.
  • O caminho do Amazon Simple Storage Service (Amazon S3) está em letras maiúsculas em vez de minúsculas.
  • As partições não estão formatadas no formato do estilo Hive, ano=2023/mês=01/dia=01. Em vez disso, as partições estão no formato não Hive, /2023/01/01/.

Resolução

Permitir glue:BatchCreatePartition na política do IAM

Analise as políticas do IAM anexadas ao usuário ou função que é usado para executar o MSCK REPAIR TABLE. Quando você usa o catálogo de dados com o Athena, a política do IAM deve permitir a ação glue:BatchCreatePartition. Se a política não permitir essa ação, o Athena não poderá adicionar partições ao metastore. Para ver um exemplo de uma política do IAM que permite a ação glue:BatchCreatePartition, consulte Política gerenciada pela AWS: AmazonAthenaFullAccess.

Alterar o caminho do Amazon S3 para letras minúsculas

Para que o MSCK REPAIR TABLE adicione as partições ao catálogo de dados, o nome do caminho do Amazon S3 deve estar em letras minúsculas.

Por exemplo, se o caminho do Amazon S3 estiver em camel case, userId, as seguintes partições não serão adicionadas ao Catálogo de Dados:

  • s3://awsdoc-example-bucket/path/userId=1/
  • s3://awsdoc-example-bucket/path/userId=2/
  • s3://awsdoc-example-bucket/path/userId=3/

Para resolver esse problema, use o userid em minúsculas:

  • s3://awsdoc-example-bucket/path/userid=1/
  • s3://awsdoc-example-bucket/path/userid=2/
  • s3://awsdoc-example-bucket/path/userid=3/

Executar o comando ALTER TABLE ADD PARTITION

Execute o comando ALTER TABLE ADD PARTITION para adicionar partições à tabela de cola para dados particionados no estilo Hive e não no estilo Hive.

A cláusula LOCATION é necessária para dados particionados que não são do estilo Hive. Certifique-se de incluir o caminho completo do Amazon S3 para o prefixo que contém os dados da partição:

ALTER TABLE orders ADD

PARTITION (year = '2023', month = '01', day ='01')
LOCATION 's3://mystorage/path/to/test/'

PARTITION (year = '2023', month = '01', day ='02')
LOCATION 's3://mystorage/path/to/test/';

Informações relacionadas

Particionamento de dados no Athena

Ações, recursos e chaves de condição para o Amazon Athena

Ações, recursos e chaves de condição para o AWS Glue

AWS OFICIAL
AWS OFICIALAtualizada há um ano