Definir opções de configuração do crawler
Quando um crawler é executado, ele pode encontrar alterações em seu armazenamento de dados que resultam em um esquema ou partição diferente de um rastreamento anterior. Você pode usar o AWS Management Console ou a API do AWS Glue para configurar como o seu crawler processa determinados tipos de alterações.
Tópicos
- Definir opções de configuração do crawler no console do AWS Glue
- Definir opções de configuração do crawler usando a API
- Como impedir que o crawler altere um esquema existente
- Como criar um esquema único para cada caminho de inclusão do Amazon S3
- Como especificar o local da tabela e o nível de particionamento
- Como especificar o número máximo de tabelas que o crawler pode criar
- Como especificar opções de configuração para um armazenamento de dados do Delta Lake
- Como configurar um crawler para usar credenciais do Lake Formation
Definir opções de configuração do crawler no console do AWS Glue
Quando você define um crawler usando o console do AWS Glue, tem várias opções para configurar o comportamento desse crawler. Para obter mais informações sobre como usar o console do AWS Glue para adicionar um crawler, consulte Trabalhar com crawlers no console do AWS Glue.
Quando um crawler é executado em um armazenamento de dados previamente rastreado, ele pode descobrir que um esquema foi alterado ou que alguns objetos no armazenamento de dados foram excluídos. O crawler registra as alterações em um esquema. Dependendo do tipo de origem do crawler, novas tabelas e partições podem ser criadas independentemente da política de alteração do esquema.
Para especificar o que o crawler faz quando encontra alterações no esquema, você pode escolher uma das seguintes ações no console:
Update the table definition in the Data Catalog (Atualizar a definição da tabela no Data Catalog): adicione novas colunas, remova colunas ausentes e modifique as definições de colunas existentes no AWS Glue Data Catalog. Remova todos os metadados não definidos pelo crawler. Essa é a configuração padrão.
-
Add new columns only (Adicionar somente novas colunas): para tabelas que são mapeadas para um armazenamento de dados do Amazon S3, inclua novas colunas conforme elas são descobertas, mas não remova ou altere o tipo de colunas existentes no Data Catalog. Escolha essa opção quando as colunas atuais no Data Catalog estiverem corretas e você não quiser que o crawler remova ou altere o tipo das colunas existentes. Se um atributo de tabela fundamental do Amazon S3 for alterado, como uma classificação, tipo de compactação ou um delimitador de CSV, marque a tabela como defasada. Mantenha os formatos de entrada e de saída existentes no Data Catalog. Atualize os parâmetros de SerDe somente se o parâmetro for definido pelo crawler. For all other data stores, modify existing column definitions (Para todos os outros armazenamentos de dados, modifique as definições de coluna existentes).
Ignore the change and don't update the table in the Data Catalog (Ignorar a alteração e não atualizar a tabela no Data Catalog): somente novas tabelas e partições são criadas.
Essa é a configuração padrão para crawls incrementais.
Um crawler também pode descobrir partições novas ou alteradas. Por padrão, novas partições são adicionadas e as partições existentes são atualizadas se houver mudanças. Além disso, você pode definir uma opção de configuração de crawler como Update all new and existing partitions with metadata from the table (Atualizar todas as partições novas e existentes com metadados da tabela) no console do AWS Glue. Quando essa opção é definida, as partições herdam da tabela pai as propriedades dos metadados, como classificação, formato de entrada, formato de saída, informações de SerDe e esquema. Todas as alterações nessas propriedades em uma tabela são propagadas para suas respectivas partições. Quando essa opção de configuração é definida em um crawler existente, as partições existentes são atualizadas para corresponder às propriedades da tabela pai na próxima vez que o crawler for executado.
Para especificar o que o crawler faz quando encontra um objeto excluído no armazenamento de dados, escolha uma das seguintes ações:
Excluir tabelas e partições do Data Catalog
Ignorar a alteração e não atualizar a tabela no Data Catalog
Essa é a configuração padrão para crawls incrementais.
Mark the table as deprecated in the Data Catalog (Marcar a tabela como defasada no Data Catalog): essa é a configuração padrão.
Definir opções de configuração do crawler usando a API
Quando você define um crawler usando a API do AWS Glue, é possível escolher entre vários campos para configurar o crawler. A SchemaChangePolicy
na API do crawler determina o que o crawler faz quando descobre um esquema alterado ou um objeto excluído. O crawler registra alterações do esquema à medida que ele é executado.
Quando um crawler é executado, novas tabelas e partições sempre são criadas independentemente da política de alteração de esquema. Você pode escolher uma das seguintes ações no campo UpdateBehavior
na estrutura SchemaChangePolicy
para determinar o que o crawler faz quando encontra um esquema de tabela alterado:
UPDATE_IN_DATABASE
: atualizar a tabela no AWS Glue Data Catalog. Adicione novas colunas, remova as colunas ausentes e modifique as definições das colunas existentes. Remova todos os metadados não definidos pelo crawler.LOG
: ignorar as alterações e não atualizar a tabela no Data Catalog.Essa é a configuração padrão para crawls incrementais.
Você também pode substituir a estrutura SchemaChangePolicy
usando um objeto JSON fornecido no campo Configuration
da API do crawler. Esse objeto JSON pode conter um par chave-valor para definir a política para não atualizar as colunas existentes e adicionar apenas novas colunas. Por exemplo, forneça o seguinte objeto JSON como uma string:
{ "Version": 1.0, "CrawlerOutput": { "Tables": { "AddOrUpdateBehavior": "MergeNewColumns" } } }
Essa opção corresponde à opção Add new columns only (Adicionar somente novas colunas) no console do AWS Glue. Ela substitui a estrutura SchemaChangePolicy
para tabelas que resultam somente do crawling de armazenamentos de dados do Amazon S3. Escolha essa opção se quiser manter os metadados existentes no Data Catalog (a fonte confiável). As novas colunas são adicionadas conforme são encontradas, incluindo tipos de dados aninhados. Mas as colunas existentes não são removidas e o tipo não é alterado. Se um atributo de tabela do Amazon S3 for alterado significativamente, marque a tabela como defasada e registre em log um aviso de que um atributo incompatível precisa ser resolvido.
Quando um crawler é executado em um armazenamento de dados previamente rastreado, ele pode descobrir partições novas ou alteradas. Por padrão, novas partições são adicionadas e as partições existentes são atualizadas se houver mudanças. Além disso, você pode definir uma opção de configuração do crawler como InheritFromTable
, que corresponde à opção Update all new and existing partitions with metadata from the table (Atualizar todas as partições novas e existentes com metadados da tabela) no console do AWS Glue. Quando essa opção é definida, as partições herdam as propriedades dos metadados de sua tabela principal, como classificação, formato de entrada, formato de saída, informações de SerDe e esquema. Todas propriedades alteradas na tabela principal são propagadas para suas respectivas partições.
Quando essa opção de configuração é definida em um crawler existente, as partições existentes são atualizadas para corresponder às propriedades da tabela pai na próxima vez que o crawler for executado. Esse comportamento é definido no campo Configuration
da API do crawler. Por exemplo, forneça o seguinte objeto JSON como uma string:
{ "Version": 1.0, "CrawlerOutput": { "Partitions": { "AddOrUpdateBehavior": "InheritFromTable" } } }
O campo Configuration
da API do crawler pode definir várias opções de configuração. Por exemplo, para configurar a saída do crawler para partições e tabelas, você pode fornecer uma representação de string do seguinte objeto JSON:
{ "Version": 1.0, "CrawlerOutput": { "Partitions": { "AddOrUpdateBehavior": "InheritFromTable" }, "Tables": {"AddOrUpdateBehavior": "MergeNewColumns" } } }
Você pode escolher uma das seguintes ações para determinar o que o crawler faz quando encontra um objeto excluído no armazenamento de dados. O campo DeleteBehavior
na estrutura SchemaChangePolicy
na API do crawler define o comportamento do crawler quando ele descobre um objeto excluído.
DELETE_FROM_DATABASE
: excluir tabelas e partições do Data Catalog.LOG
: ignorar a alteração. Não atualizar o Data Catalog. Em vez disso, grave uma mensagem de log.DEPRECATE_IN_DATABASE
: marcar a tabela como defasada no Data Catalog. Essa é a configuração padrão.
Como impedir que o crawler altere um esquema existente
Se não quiser que um crawler substitua as atualizações feitas em campos existentes em uma definição de tabela do Amazon S3, escolha a opção no console Add new columns only (Adicionar somente novas colunas) ou defina a opção de configuração MergeNewColumns
. Isso se aplica a tabelas e partições, a menos que Partitions.AddOrUpdateBehavior
seja substituído por InheritFromTable
.
Se você não quiser que um esquema de tabela seja alterado quando um crawler for executado, defina a política de alteração de esquema como LOG
. Você também pode definir uma opção de configuração que defina esquemas de partição para herdar da tabela.
Se você estiver configurando o crawler no console, poderá escolher as seguintes ações:
Ignorar a alteração e não atualizar a tabela no Data Catalog
Update all new and existing partitions with metadata from the table (Atualizar todas as partições novas e existentes com metadados da tabela)
Quando você configura o crawler usando a API, defina os seguintes parâmetros:
Defina o campo
UpdateBehavior
na estruturaSchemaChangePolicy
paraLOG
.Defina o campo
Configuration
com uma representação de string do objeto JSON a seguir na API do crawler, por exemplo:{ "Version": 1.0, "CrawlerOutput": { "Partitions": { "AddOrUpdateBehavior": "InheritFromTable" } } }
Como criar um esquema único para cada caminho de inclusão do Amazon S3
Por padrão, quando um crawler define tabelas para dados armazenados no Amazon S3, ele considera a compatibilidade dos dados e a similaridade do esquema. Os fatores de compatibilidade de dados que ele considera incluem: se os dados são do mesmo formato (por exemplo, JSON), do mesmo tipo de compactação (por exemplo, GZIP), a estrutura do caminho do Amazon S3 e outros atributos de dados. Similaridade de esquema é uma medida de até que ponto os esquemas de objetos do Amazon S3 separados são semelhantes.
Você pode configurar um crawler para CombineCompatibleSchemas
em uma definição de tabela comum quando possível. Com essa opção, o crawler ainda considera a compatibilidade dos dados, mas ignora a semelhança dos esquemas específicos ao avaliar objetos do Amazon S3 no caminho de inclusão especificado.
Se você estiver configurando o crawler no console, para combinar esquemas, selecione a opção de crawler Create a single schema for each S3 path (Criar um único esquema para cada caminho do S3).
Quando você configurar o crawler usando a API, defina a seguinte opção de configuração:
Defina o campo
Configuration
com uma representação de string do objeto JSON a seguir na API do crawler, por exemplo:{ "Version": 1.0, "Grouping": { "TableGroupingPolicy": "CombineCompatibleSchemas" } }
Para ajudar a ilustrar essa opção, suponha que você defina um crawler com um caminho de inclusão s3://bucket/table1/
. Quando o crawler é executado, ele localiza dois arquivos JSON com as seguintes características:
-
Arquivo 1:
S3://bucket/table1/year=2017/data1.json
-
Conteúdo do arquivo:
{“A”: 1, “B”: 2}
-
Esquema:
A:int, B:int
-
Arquivo 2:
S3://bucket/table1/year=2018/data2.json
-
Conteúdo do arquivo:
{“C”: 3, “D”: 4}
-
Esquema:
C: int, D: int
Por padrão, o crawler cria duas tabelas, chamadas year_2017
e year_2018
, porque os esquemas não são suficientemente semelhantes. No entanto, se a opção Create a single schema for each S3 path (Criar um único esquema para cada caminho do S3) for selecionada, e se os dados forem compatíveis, o crawler criará uma tabela. A tabela tem o esquema A:int,B:int,C:int,D:int
e partitionKey
year:string
.
Como especificar o local da tabela e o nível de particionamento
Por padrão, quando um crawler define tabelas para dados armazenados no Amazon S3, ele tenta mesclar esquemas e criar tabelas de nível superior (year=2019
). Em alguns casos, você pode esperar que o crawler crie uma tabela para a pasta month=Jan
, mas em vez disso, o crawler cria uma partição desde o momento em que uma pasta irmã (month=Mar
) tenha sido mesclada na mesma tabela.
A opção de crawler no nível da tabela fornece a flexibilidade de informar ao crawler onde as tabelas estão localizadas e como você deseja que as partições sejam criadas. Quando você especifica um Table level (Nível da tabela), ela é criada nesse nível absoluto a partir do bucket do Amazon S3.

Ao configurar o crawler no console, você pode especificar um valor para a opção Table level (Nível da tabela) do Crawler. O valor deve ser um inteiro positivo que indica o local da tabela (o nível absoluto no conjunto de dados). O nível para a pasta de nível superior é um. Por exemplo, para o caminho mydataset/a/b
, se o nível for definido como três, a tabela será criada no local mydataset/a/b
.
Como especificar o número máximo de tabelas que o crawler pode criar
Opcionalmente, você pode especificar o número máximo de tabelas que o crawler pode criar especificando um TableThreshold
por meio da CLI ou do console do AWS Glue. Se as tabelas detectadas pelo crawler durante o rastreamento forem maiores que esse valor de entrada, o rastreamento falhará e nenhum dado será gravado no Data Catalog.
Esse parâmetro é útil quando as tabelas que seriam detectadas e criadas pelo crawler são muito maiores do que o esperado. Pode haver vários motivos para isso, por exemplo:
Ao usar um trabalho do AWS Glue para preencher seus locais do Amazon S3, você pode acabar com arquivos vazios no mesmo nível de uma pasta. Nesses casos, quando você executa um crawler nesse local do Amazon S3, o crawler cria várias tabelas devido a arquivos e pastas presentes no mesmo nível.
Se você não configurar
"TableGroupingPolicy": "CombineCompatibleSchemas"
, pode acabar com mais tabelas do que o esperado.
Você especifica o TableThreshold
como um valor inteiro maior que 0. Esse valor é configurado para cada crawler. Ou seja, esse valor é considerado para cada rastreamento. Por exemplo: um crawler tem o valor TableThreshold
definido como 5. Em cada rastreamento, o AWS Glue vai comparar o número de tabelas detectadas com esse valor limite da tabela (5). Se o número de tabelas detectadas for menor que 5, o AWS Glue vai gravar as tabelas no Data Catalog. Caso contrário, o rastreamento falhará sem gravar no Data Catalog.
Console
Para definir TableThreshold
usando o console da AWS:

CLI
Para definir TableThreshold
usando a AWS CLI:
"{"Version":1.0, "CrawlerOutput": {"Tables":{"AddOrUpdateBehavior":"MergeNewColumns", "TableThreshold":5}}}";
As mensagens de erro são registradas para ajudar você a identificar os caminhos da tabela e a limpar seus dados. Exemplo: faça login em sua conta se o crawler falhar porque a contagem da tabela foi maior do que o valor limite da tabela fornecido:
Table Threshold value = 28, Tables detected - 29
No CloudWatch, registramos em log todas as localizações de tabelas detectadas como uma mensagem INFO. Um erro é registrado como o motivo da falha.
ERROR com.amazonaws.services.glue.customerLogs.CustomerLogService - CustomerLogService received CustomerFacingException with message The number of tables detected by crawler: 29 is greater than the table threshold value provided: 28. Failing crawler without writing to Data Catalog. com.amazonaws.services.glue.exceptions.CustomerFacingInternalException: The number of tables detected by crawler: 29 is greater than the table threshold value provided: 28. Failing crawler without writing to Data Catalog.
Como especificar opções de configuração para um armazenamento de dados do Delta Lake
Ao configurar um crawler para um armazenamento de dados Delta Lake, é necessário especificar estes parâmetros de configuração:
- Conexão
-
Opcionalmente, selecione ou adicione uma conexão de rede para usar com esse destino do Amazon S3. Para obter informações sobre conexões, consulte Definir conexões no AWS Glue Data Catalog.
- Criar tabelas para consulta
-
Selecione como você deseja criar as tabelas do Delta Lake:
Create Native tables (Criar tabelas nativas): permite a integração com mecanismos de consulta compatíveis com consulta direta ao log de transações do Delta.
Create Symlink tables (Criar tabelas de link simbólico): Crie uma pasta manifesto de link simbólico com arquivos de manifesto particionados pelas chaves de partição, com base nos parâmetros de configuração especificados.
- Habilite o manifesto de gravação (configurável somente se você tiver selecionado Criar tabelas de links simbólicos para uma fonte Delta Lake
-
Selecione se deseja detectar metadados da tabela ou alterações de esquema no log de transações do Delta Lake; fazer isso gera novamente o arquivo manifesto. Você não deverá escolher essa opção se tiver configurado uma atualização automática de manifesto com
SET TBLPROPERTIES
do Delta Lake. - Incluir caminhos das tabelas do Delta Lake
-
Especifique um ou mais caminhos do Amazon S3 para tabelas do Delta, como s3://
bucket
/prefixo
/objeto
.

Como configurar um crawler para usar credenciais do Lake Formation
Você pode configurar um crawler para usar credenciais do AWS Lake Formation para acessar um armazenamento de dados do Amazon S3 ou uma tabela do Data Catalog com uma localização subjacente do Amazon S3 dentro da mesma Conta da AWS ou de outra Conta da AWS. Você pode configurar uma tabela existente do Data Catalog como o destino do crawler, se o crawler e a tabela do Data Catalog residirem na mesma conta. No momento, é permitido ter somente um destino de catálogo com apenas uma tabela de catálogo ao usar uma tabela do Data Catalog como destino do crawler.
Ao definir uma tabela do Data Catalog como um destino de crawler, certifique-se de que a localização subjacente da tabela do Data Catalog seja um local do Amazon S3. Os crawlers que usam credenciais do Lake Formation são compatíveis somente com destinos do Data Catalog com localizações subjacentes do Amazon S3.
Configuração exigida quando o crawler e a localização registrada do Amazon S3 ou a tabela do Data Catalog residem na mesma conta (crawling na conta)
Para permitir que o crawler acesse um armazenamento de dados ou uma tabela do Data Catalog usando as credenciais do Lake Formation, você precisa registrar a localização dos dados com o Lake Formation. Além disso, o perfil do IAM do crawler deve ter permissões para ler os dados do destino no qual o bucket do Amazon S3 está registrado.
Você pode concluir as seguintes etapas de configuração usando o AWS Management Console ou a AWS Command Line Interface (AWS CLI).
Configuração exigida quando o crawler e a localização registrada do Amazon S3 residem em contas diferentes (crawling entre contas)
Para permitir que o crawler acesse um armazenamento de dados em uma conta diferente usando as credenciais do Lake Formation, primeiro você deve registrar a localização de dados do Amazon S3 com o Lake Formation. Em seguida, você concede permissões de localização de dados à conta do crawler conforme as etapas a seguir.
Você pode concluir as seguintes etapas usando o AWS Management Console ou a AWS CLI.
Um crawler que use credenciais do Lake Formation é compatível somente com destinos do Amazon S3 e do Data Catalog.
Para destinos que utilizam o fornecimento de credenciais do Lake Formation, as localizações subjacentes do Amazon S3 devem pertencer ao mesmo bucket. Por exemplo, os clientes podem usar vários destinos (s3://bucket1/folder1, s3://bucket1/folder2), desde que todos os locais de destino estejam no mesmo bucket (bucket1). Não é permitido especificar buckets diferentes (s3://bucket1/folder1, s3://bucket2/folder2).
No momento, só é permitido ter um destino de catálogo com uma só tabela de catálogo para crawlers de destino do Data Catalog.