Configurar a projeção de partições - Amazon Athena

Configurar a projeção de partições

A configuração da projeção de partições nas propriedades de uma tabela é um processo de duas etapas:

  1. Especifique os intervalos de dados e os padrões relevantes para cada coluna de partição ou use um modelo personalizado.

  2. Habilite a projeção de partições para a tabela.

nota

Antes de adicionar propriedades de projeção de partição para uma tabela existente, a coluna de partição para a qual você está configurando as propriedades de projeção de partição já deve existir no esquema da tabela. Caso a coluna de partição ainda não exista, você deverá adicionar manualmente uma coluna de partição à tabela existente. O AWS Glue não executa esta etapa para você de forma automática.

Esta seção mostra como definir as propriedades de tabela para o AWS Glue. Para defini-las, você pode usar o console do AWS Glue, as consultas CREATE TABLE do Athena ou as operações de AWS Glue API. O procedimento a seguir mostra como definir as propriedades no console do AWS Glue.

Para configurar e habilitar a projeção de partições usando o console do AWS Glue
  1. Faça login no AWS Management Console e abra o console do AWS Glue em https://console.aws.amazon.com/glue/.

  2. Escolha a guia Tabelas.

    Na guia Tabelas, você pode editar tabelas existentes ou escolher Adicionar tabelas para criar novas tabelas. Para obter informações sobre como adicionar tabelas manualmente ou com um crawler, consulte Trabalhar com tabelas no console do AWS Glue no Guia do desenvolvedor do AWS Glue.

  3. Na lista de tabelas, escolha o link para a tabela que você deseja editar.

    No console do AWS Glue, escolha uma tabela para editar.
  4. Selecione Actions (Ações), Edit (Editar).

  5. Na página Edit table (Editar tabela), na seção Table properties (Propriedades da tabela), para cada coluna particionada, adicione o seguinte par de chave-valor:

    1. Em Chave, adicione projection.columnName.type.

    2. Em Valor, adicione um dos tipos compatíveis: enum, integer, date ou injected. Para ter mais informações, consulte Tipos compatíveis para projeção de partições.

  6. Seguindo as orientações em Tipos compatíveis para projeção de partições, adicione outros pares de chave-valor de acordo com seus requisitos de configuração.

    O exemplo de configuração de tabela a seguir configura a coluna ‭year‬ para projeção de partições, restringindo os valores que podem ser retornados a um intervalo de 2010 a 2016.

    Configuração da projeção de partições para uma coluna de partição nas propriedades de tabela do console do AWS Glue.
  7. Adicione um par de chave-valor para habilitar a projeção de partições. Em Chave, insira projection.enabled e, em Valor, insira true.

    nota

    Você pode desativar a projeção de partições nessa tabela a qualquer momento definindo projection.enabled como false.

  8. Quando terminar, escolha Salvar.

  9. No editor de consultas do Athena, faça uma consulta de teste nas colunas de tabela que você configurou.

    A consulta de exemplo a seguir usa SELECT DISTINCT para retornar os valores exclusivos da coluna year. O banco de dados contém dados de 1987 a 2016, mas a propriedade ‭projection.year.range restringe os valores retornados para os anos 2010 a 2016.

    Consultando uma coluna que usa projeção de partições.
    nota

    Se você definir projection.enabled como true, mas não conseguir configurar uma ou mais colunas de partição, receberá uma mensagem de erro como a seguinte:

    HIVE_METASTORE_ERROR: Table database_name.table_name is configured for partition projection, but the following partition columns are missing projection configuration: [column_name] (table database_name.table_name).

Como especificar locais de armazenamento personalizados do S3

Ao editar as propriedades de tabela no AWS Glue, você também pode especificar um modelo de caminho do Amazon S3 personalizado para as partições projetadas. Um modelo personalizado permite que o Athena mapeie corretamente os valores de partição para os locais de arquivo personalizados do Amazon S3 que não seguem o padrão .../column=value/....

O uso de um modelo personalizado é opcional. No entanto, se você usar um modelo personalizado, o modelo deverá conter um espaço reservado para cada coluna de partição. Os locais baseados em modelo devem terminar com uma barra para que os arquivos de dados particionados sejam armazenados em uma “pasta” por partição.

Como especificar um modelo de local de partição personalizado
  1. Seguindo as etapas para configurar e habilitar a projeção de partições usando o console do AWS Glue, adicione outro par de chave-valor que especifique um modelo personalizado da seguinte forma:

    1. Em Chave, digite storage.location.template.

    2. Em Valor, especifique um local que inclua um espaço reservado para cada coluna de partição. Termine cada espaço reservado (e o próprio caminho do S3) com uma barra única.

      Os valores de modelo de exemplo a seguir assumem uma tabela com colunas de partição a, b e c.

      s3://amzn-s3-demo-bucket/table_root/a=${a}/${b}/some_static_subdirectory/${c}/
      s3://amzn-s3-demo-bucket/table_root/c=${c}/${b}/some_static_subdirectory/${a}/${b}/${c}/${c}/

      Para a mesma tabela, o valor de modelo de exemplo a seguir é inválido porque não contém nenhum espaço reservado para a coluna c.

      s3://amzn-s3-demo-bucket/table_root/a=${a}/${b}/some_static_subdirectory/
  2. Selecione Apply (Aplicar).