Ir para o conteúdo

Como o crawler do AWS Glue detecta o esquema?

5 minuto de leitura
0

Quando executo um crawler do AWS Glue, ele cria várias tabelas com esquemas que parecem semelhantes. Quero saber como o crawler detecta o esquema.

Resolução

Quando você executa um crawler do AWS Glue, ele realiza as seguintes etapas:

  1. O crawler classifica os dados.
  2. O crawler agrupa os dados em tabelas ou partições.
  3. O crawler grava metadados no Catálogo de Dados do AWS Glue.

Para entender o que o crawler faz e como ele detecta o esquema, analise as informações a seguir.

Definir um crawler

Ao definir um crawler do AWS Glue, é possível escolher um ou mais classificadores personalizados que avaliam o formato dos seus dados para inferir um esquema. Quando o crawler é executado, ele usa o primeiro classificador em sua lista para reconhecer seu armazenamento de dados e criar um esquema para sua tabela. Antes de definir o crawler, você deve definir os classificadores personalizados. Quando o crawler é executado, ele usa o classificador personalizado que você define para encontrar uma correspondência no armazenamento de dados. A combinação com cada classificador gera uma certeza. Se o classificador retornar certainty=1.0 durante o processamento, o crawler terá 100% de certeza de que o classificador pode criar o esquema correto. Nesse caso, o crawler não invoca nenhum outro classificador e, em seguida, cria uma tabela com o classificador que corresponde ao classificador personalizado.

Para mais informações, consulte Definir e gerenciar classificadores.

Detecção de esquema no crawler

Durante a primeira execução do crawler, este lê os primeiros 1.000 registros ou o primeiro megabyte de cada arquivo para inferir o esquema. A quantidade de dados lidos depende do formato do arquivo e da disponibilidade de um registro válido. Por exemplo, se o arquivo de entrada for um arquivo JSON, o crawler lerá os primeiros 1 MB do arquivo para inferir o esquema. Se o crawler ler um registro válido nos primeiros 1 MB do arquivo, ele inferirá o esquema. Se o crawler não conseguir inferir o esquema após 1 MB, ele continuará lendo até 10 MB do arquivo em incrementos de 1 MB. Para arquivos CSV, o crawler lê os primeiros 1.000 registros ou os primeiros 1 MB de dados, o que ocorrer primeiro. Para arquivos Parquet, o crawler infere diretamente o esquema do arquivo. O crawler compara os esquemas inferidos de todas as subpastas e arquivos e, em seguida, cria uma ou mais tabelas. Quando um crawler cria uma tabela, ele considera os seguintes fatores:

  • Compatibilidade de dados para verificar se os dados têm o mesmo formato, tipo de compactação e caminho incluído.
  • Similaridade de esquema para verificar a semelhança dos esquemas em termos do limite de partição e do número de esquemas diferentes.

Para que um crawler considere esquemas semelhantes, as seguintes condições devem ser verdadeiras:

  • O limite de partição é superior a 0,7 (70%).
  • O número máximo de esquemas diferentes, também chamado de "clusters" nesse contexto, não excede 5.

O crawler infere o esquema no nível da pasta e compara os esquemas em todas as pastas. Se os esquemas comparados corresponderem a um limite de partição superior a 70%, os esquemas serão indicados como partições de uma tabela. Se elas não corresponderem, o crawler cria uma tabela para cada pasta e resulta em um número maior de tabelas.

Cenários de exemplo

Exemplo 1

No exemplo a seguir, a pasta DOC-EXAMPLE-FOLDER1 tem 10 arquivos, 8 arquivos com esquema SCH_A e 2 arquivos com SCH_B.

Suponha que os arquivos sejam semelhantes aos seguintes exemplos:

SHC_A:

{ "id": 1, "first_name": "John", "last_name": "Doe"}{ "id": 2, "first_name": "Li", "last_name": "Juan"}

SCH_B:

{"city":"Dublin","country":"Ireland"}{"city":
`"Paris","country":"France"}`When the crawler crawls the Amazon Simple Storage Service (Amazon S3) path **s3://DOC-EXAMPLE-FOLDER1**, the crawler creates one table. The table comprises columns of both schema **SCH\_A** and **SCH\_B**. This is because 80% of the files in the path belong to the **SCH\_A** schema, and 20% of the files belong to the **SCH\_B** schema. Therefore, the schema meets the partition threshold value. Also, the number of different schemas doesn't exceed the number of clusters, and the schema doesn't exceed the cluster size limit.

Exemplo 2

No exemplo a seguir, a pasta DOC-EXAMPLE-FOLDER2 tem 10 arquivos, 7 arquivos com o esquema SCH_A e 3 arquivos com o esquema SCH_B.

Quando o crawler rastreia o caminho s3://DOC-EXAMPLE-FOLDER2 do Amazon S3, ele cria uma tabela para cada arquivo. Isso ocorre porque 70% dos arquivos pertencem ao esquema SCH_A e 30% dos arquivos pertencem ao esquema SCH_B. Isso significa que o esquema não atende ao limite de partição.

Observação: é possível verificar os logs do crawler no Amazon CloudWatch para obter informações sobre as tabelas criadas.

Opções de crawler

Ao personalizar o comportamento do crawler, é possível escolher uma das seguintes opções:

  • Criar um único esquema: é possível usar a opção Criar um único esquema para cada caminho do S3 para configurar o crawler para ignorar a semelhança do esquema e criar um único esquema. Para mais informações, consulte Criar um esquema único para cada caminho de inclusão do Amazon S3.
    Observação: se o crawler detectar incompatibilidade de dados, ele ainda criará várias tabelas.
  • Especificar a localização da tabela: é possível usar a opção de crawler em nível de tabela para especificar onde as tabelas estão localizadas e como as partições são criadas. Para mais informações, consulte Especificar o local da tabela e o nível de particionamento.

Informações relacionadas

Usar crawlers para preencher o catálogo de dados

Personalizar o comportamento do Crawler

AWS OFICIALAtualizada há 5 meses