Ir para o conteúdo

Como o crawler do AWS Glue detecta o esquema?

4 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

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 pelo crawler 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:

  • Os dados têm o mesmo formato, tipo de compactação e caminho incluído
  • Quão semelhantes são os esquemas no limite de partição e no 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 cinco.

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%, o crawler indicará os esquemas como partições de uma tabela. Se elas não corresponderem, o crawler cria uma tabela para cada pasta que 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, oito arquivos com esquema SCH_A e dois arquivos com SCH_B.

Os arquivos são 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"}

Quando o crawler rastreia o caminho s3://DOC-EXAMPLE-FOLDER1 do Amazon Simple Storage Service (Amazon S3) , ele cria uma tabela. A tabela compreende colunas do esquema SCH_A e do esquema SCH_B. Isso ocorre porque 80% dos arquivos no caminho pertencem ao esquema SCH_A e 20% dos arquivos pertencem ao esquema SCH_B. Portanto, o esquema atende ao valor limite da partição. Além disso, o número de esquemas diferentes não excede o número de clusters e o esquema não excede o limite de tamanho do cluster.

Exemplo 2

No exemplo a seguir, a pasta DOC-EXAMPLE-FOLDER2 tem 10 arquivos, sete arquivos com o esquema SCH_A e três 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. Portanto, o esquema não atende ao limite de partição.

Observação: Para obter informações sobre as tabelas, verifique os logs do crawler no Amazon CloudWatch.

Opções de crawler

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

Informações relacionadas

Usar crawlers para preencher o catálogo de dados

Personalizar o comportamento do Crawler

Definir e gerenciar classificadores

AWS OFICIALAtualizada há 9 meses