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:
-
Especifique os intervalos de dados e os padrões relevantes para cada coluna de partição ou use um modelo personalizado.
-
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
Faça login no AWS Management Console e abra o console do AWS Glue em https://console.aws.amazon.com/glue/
. -
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.
-
Na lista de tabelas, escolha o link para a tabela que você deseja editar.
-
Selecione Actions (Ações), Edit (Editar).
-
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:
-
Em Chave, adicione
projection.
.columnName
.type -
Em Valor, adicione um dos tipos compatíveis:
enum
,integer
,date
ouinjected
. Para ter mais informações, consulte Tipos compatíveis para projeção de partições.
-
-
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. -
Adicione um par de chave-valor para habilitar a projeção de partições. Em Chave, insira
projection.enabled
e, em Valor, insiratrue
.nota
Você pode desativar a projeção de partições nessa tabela a qualquer momento definindo
projection.enabled
comofalse
. -
Quando terminar, escolha Salvar.
-
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 colunayear
. 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.nota
Se você definir
projection.enabled
comotrue
, 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
] (tabledatabase_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
-
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:
-
Em Chave, digite
storage.location.template
. -
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
ec
.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/
-
-
Selecione Apply (Aplicar).