Como o rastreador AWS Glue detecta o esquema?

Data da última atualização: 27/08/2021

Estou executando um rastreador do AWS Glue. O rastreador está criando várias tabelas, mesmo que os esquemas sejam semelhantes. Quero saber como meu rastreador detecta o esquema.

Resolução

Quando você executa o rastreador do AWS Glue, o rastreador faz o seguinte:

  1. Classifica os dados
  2. Agrupa os dados em tabelas ou partições
  3. Grava metadados no AWS Glue Data Catalog

Analise o seguinte para saber o que acontece quando você executa o rastreador e como ele detecta o esquema.

Definição de um rastreador

Ao definir um rastreador do AWS Glue, você pode escolher um ou mais classificadores personalizados que avaliam o formato dos dados para inferir um esquema. Quando o rastreador é executado, o primeiro classificador da sua lista a reconhecer com êxito o armazenamento de dados é usado para criar um esquema para sua tabela. Você define os classificadores personalizados antes de definir o rastreador. Quando o rastreador é executado, o rastreador usa o classificador personalizado que você definiu para encontrar uma correspondência no armazenamento de dados. A correspondência com cada classificador gera uma certeza. Se o classificador retornar certeza=1,0 durante o processamento, o rastreador terá 100% de certeza de que o classificador pode criar o esquema correto. Neste caso, o rastreador para de invocar outros classificadores e, em seguida, cria uma tabela com o classificador que corresponde ao classificador personalizado.

Se o AWS Glue não encontrar um classificador personalizado que se ajuste ao formato de dados de entrada com 100% de certeza, o AWS Glue chamará os classificadores integrados. O classificador incorporado retorna certeza=1,0 se o formato corresponder, ou certeza=0,0 se o formato não corresponder. Se nenhum classificador retornar certeza=1,0, o AWS Glue usará a saída do classificador que tem a maior certeza. Se nenhum classificador retornar uma certeza maior que 0,0, o AWS Glue retornará a string de classificação padrão de UNKNOWN. Para obter a lista atual de classificadores internos no AWS Glue e a ordem em que eles são chamados, consulte Classificadores incorporados no AWS Glue.

Detecção de esquema no rastreador

Durante a primeira execução do rastreador, ele 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 rastreador lerá os primeiros 1 MB do arquivo para inferir o esquema. Se um registro válido for lido nos primeiros 1 MB do arquivo, o rastreador inferirá o esquema. Se o rastreador não puder inferir o esquema depois de ler os primeiros 1 MB, o rastreador lerá até um máximo de 10 MB do arquivo, incrementando 1 MB por vez. Para arquivos CSV, o rastreador lê os primeiros 100 registros ou os primeiros 1 MB de dados, o que vier primeiro. Para arquivos Parquet, o rastreador infere o esquema diretamente do arquivo. O rastreador compara os esquemas inferidos de todas as subpastas e arquivos e, em seguida, cria uma ou mais tabelas. Quando um rastreador cria uma tabela, ele considera os seguintes fatores:

  • Compatibilidade de dados para verificar se os dados são do mesmo formato, tipo de compactação e caminho de inclusão
  • Semelhança de esquema para verificar o quão próximos os esquemas são semelhantes em termos de limite de partição e o número de esquemas diferentes

Para que os esquemas sejam considerados 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 chamados de “clusters” neste contexto) não excede 5.

O rastreador infere o esquema no nível da pasta e compara os esquemas em todas as pastas. Se os esquemas comparados corresponderem, ou seja, se o limite de partição for maior que 70%, os esquemas serão denotados como partições de uma tabela. Se eles não corresponderem, o rastreador criará uma tabela para cada pasta, resultando em um número maior de tabelas.

Cenários de exemplo

Exemplo 1: suponha que a pasta DOC-EXAMPLE-FOLDER1 tenha 10 arquivos, 8 arquivos com esquema SCH_A e 2 arquivos com SCH_B.

Suponha que os arquivos com o esquema SHC_A sejam semelhantes aos seguintes:

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

Suponha que os arquivos com o esquema SCH_B sejam semelhantes aos seguintes:

{"city":"Dublin","country":"Ireland"}
{"city":"Paris","country":"France"}

Quando o rastreador rastreia o caminho do Amazon Simple Storage Service (Amazon S3) s3://DOC-EXAMPLE-FOLDER1, o rastreador cria uma tabela. A tabela compreende colunas do esquema SCH_A e 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 valor limite da partição é atingido. Além disso, o número de esquemas diferentes não excedeu o número de clusters e o limite de tamanho do cluster não foi excedido.

Exemplo 2: suponha que a pasta DOC-EXAMPLE-FOLDER2 tenha 10 arquivos, 7 arquivos com o esquema SCH_A e 3 arquivos com o esquema SCH_B.

Quando o rastreador rastreia o caminho do Amazon S3 s3: //DOC-EXAMPLE-FOLDER2, o rastreador 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 limite de partição não foi atingido. Você pode verificar os logs do rastreador no Amazon CloudWatch para obter informações sobre as tabelas criadas.

Opções de rastreador

  • Crie um único esquema: para configurar o rastreador para ignorar a semelhança de esquema e criar apenas um esquema, use a opção Criar um único esquema para cada caminho do S3. Para obter mais informações, consulte Como criar um único esquema para cada caminho de inclusão do Amazon S3. No entanto, se o rastreador detectar incompatibilidade de dados, o rastreador ainda criará várias tabelas.
  • Especificar localização da tabela: a opção de rastreador de nível de tabela permite informar ao rastreador onde as tabelas estão localizadas e como as partições devem ser criadas. Quando você especifica um valor de nível de tabela, a tabela é criada neste nível absoluto a partir do bucket do Amazon S3. Ao configurar o rastreador no console, você pode especificar um valor para a opção de rastreador de nível de tabela. O valor deve ser um número inteiro positivo que indique a localização da tabela (o nível absoluto no conjunto de dados). O nível para a pasta de nível superior é 1. Por exemplo, para o caminho mydataset/a/b, se o nível estiver definido como 3, a tabela será criada no local mydataset/a/b. Para obter mais informações, consulte Como especificar o local da tabela.

Este artigo ajudou?


Precisa de ajuda com faturamento ou suporte técnico?