

# Como impedir que o crawler altere um esquema existente
<a name="crawler-schema-changes-prevent"></a>

 Você pode impedir que os Crawler do AWS Glues façam qualquer alteração de esquema no Catálogo de Dados quando eles são executados. Por padrão, os crawlers atualizam o esquema no Catálogo de Dados para corresponder à fonte de dados que está recebendo um crawl. No entanto, em alguns casos, talvez você queira impedir que o Crawler modifique o esquema existente, especialmente se transformou ou limpou os dados e não quer que o esquema original substitua as alterações.

 Siga estas etapas para configurar seu crawler para não substituir o esquema existente em uma definição de tabela. 

------
#### [  Console de gerenciamento da AWS  ]

1. Faça login no Console de gerenciamento da AWS e abra o console do AWS Glue em [https://console.aws.amazon.com/glue/](https://console.aws.amazon.com/glue/).

1. Escolha **Crawlers** no **Catálogo de dados**.

1. Escolha um crawler na lista e escolha **Editar**.

1. Escolha **Etapa 4: definir a saída e a programação**.

1. Em **Opções avançadas**, escolha **Adicionar somente novas colunas** ou **Ignorar a alteração e não atualizar a tabela no Catálogo de Dados**. 

1.  Também é possível definir uma opção de configuração para **Atualizar todas as partições novas e existentes com metadados da tabela**. Isso define os esquemas de partição que serão herdados da tabela. 

1. Selecione **Atualizar**.

------
#### [ AWS CLI ]

O exemplo a seguir mostra como configurar um crawler para não alterar o esquema existente, apenas adicionar novas colunas:

```
aws glue update-crawler \
  --name myCrawler \
  --configuration '{"Version": 1.0, "CrawlerOutput": {"Tables": {"AddOrUpdateBehavior": "MergeNewColumns"}}}'
```

O exemplo a seguir mostra como configurar um crawler para não alterar o esquema existente e não adicionar novas colunas:

```
aws glue update-crawler \
  --name myCrawler \
  --schema-change-policy UpdateBehavior=LOG \
  --configuration '{"Version": 1.0, "CrawlerOutput": {"Partitions": { "AddOrUpdateBehavior": "InheritFromTable" }}}'
```

------
#### [ API ]

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`. 

Quando você configura o crawler usando a API, defina os seguintes parâmetros:
+ Defina o campo `UpdateBehavior` na estrutura `SchemaChangePolicy` para `LOG`.
+  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" }
     }
  }
  ```

------