Come fa il crawler AWS Glue a localizzare lo schema?

Ultimo aggiornamento: 27/08/2021

Sto eseguendo un crawler AWS Glue. Il crawler sta creando più tabelle anche se gli schemi hanno un aspetto simile. Desidero sapere in che modo il mio crawler localizza lo schema.

Risoluzione

Quando esegui il crawler AWS Glue, il crawler esegue le seguenti operazioni:

  1. Classifica i dati
  2. Raggruppa i dati in tabelle o partizioni
  3. Scrive i metadati nel catalogo dati di AWS Glue

Verifica quanto segue per scoprire cosa succede quando si esegue il crawler e in che modo il crawler localizza lo schema.

Definizione di un crawler

Quando definisci un crawler AWS Glue, puoi scegliere uno o più classificatori personalizzati che valutano il formato dei dati per dedurre uno schema. Quando il crawler viene eseguito, il primo classificatore nell'elenco che riconosce correttamente il data store viene utilizzato per creare uno schema per la tabella. È possibile definire i classificatori personalizzati prima di definire il crawler. Quando il crawler viene eseguito, questo utilizza il classificatore personalizzato definito per trovare una corrispondenza nel data store. La corrispondenza con ogni classificatore genera una certezza. Se il classificatore restituisce certezza=1,0 durante l'elaborazione, il crawler è sicuro al 100% che il classificatore possa creare lo schema corretto. In questo caso, il crawler smette di richiamare altri classificatori e crea quindi una tabella con il classificatore che corrisponde al classificatore personalizzato.

Se AWS Glue non trova un classificatore personalizzato adatto al formato dei dati di input con una certezza del 100%, AWS Glue richiama i classificatori integrati. Il classificatore integrato restituisce certezza=1,0 se il formato corrisponde, o certezza=0,0 se il formato non corrisponde. Se nessun classificatore restituisce certezza=1,0, AWS Glue utilizza l'output del classificatore con la massima certezza. Se nessun classificatore restituisce una certezza superiore a 0,0, AWS Glue restituisce la stringa di classificazione di default di UNKNOWN (SCONOSCIUTO). Per l'elenco corrente dei classificatori integrati in AWS Glue e l'ordine in cui vengono richiamati, consulta Classificatori integrati in AWS Glue.

Localizzazione dello schema nel crawler

Durante la prima esecuzione del crawler, questo legge i primi 1.000 registri o il primo megabyte di ciascun file per dedurre lo schema. La quantità di dati letti dipende dal formato del file e dalla disponibilità di un registro valido. Ad esempio, se il file di input è un file JSON, il crawler legge il primo MB del file per dedurre lo schema. Se viene letto un record valido entro il primo MB del file, il crawler deduce lo schema. Se il crawler non è in grado di dedurre lo schema dopo aver letto il primo MB, il crawler legge fino a un massimo di 10 MB del file, incrementando 1 MB alla volta. Per i file CSV, il crawler legge i primi 100 registri o il primo MB di dati, qualunque sia il primo evento. Per i file Parquet, il crawler deduce lo schema direttamente dal file. Il crawler confronta gli schemi dedotti da tutte le sottocartelle e i file, quindi crea una o più tabelle. Quando un crawler crea una tabella, considera i seguenti fattori:

  • Compatibilità dei dati per verificare se i dati sono dello stesso formato, tipo di compressione e percorso di inclusione
  • Somiglianza dello schema per verificare la somiglianza degli schemi in termini di soglia di partizione e numero di schemi diversi

Affinché gli schemi siano considerati simili, devono essere soddisfatte le seguenti condizioni:

  • La soglia di partizione è superiore a 0,7 (70%).
  • Il numero massimo di schemi diversi (denominati anche "cluster" in questo contesto) non supera 5.

Il crawler deduce lo schema a livello di cartella e confronta gli schemi in tutte le cartelle. Se gli schemi confrontati corrispondono, ovvero se la soglia di partizione è superiore al 70%, gli schemi vengono indicati come partizioni di una tabella. Se non corrispondono, il crawler crea una tabella per ogni cartella, con conseguente aumento del numero di tabelle.

Scenari di esempio

Esempio 1: Supponiamo che la cartella DOC-EXAMPLE-FOLDER1 abbia 10 file, 8 file con schema SCH_A e 2 file con SCH_B.

Supponiamo che i file con lo schema SHC_A siano simili ai seguenti:

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

Supponiamo che i file con lo schema SCH_B siano simili ai seguenti:

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

Quando il crawler esegue la ricerca per indicizzazione del percorso s3://DOC-EXAMPLE-FOLDER1 di Amazon Simple Storage Service (Amazon S3), il crawler crea una tabella. La tabella comprende colonne dello schema SCH_A e SCH_B. Questo perché l'80% dei file nel percorso appartiene allo schema SCH_A e il 20% dei file appartiene allo schema SCH_B. Pertanto, il valore di soglia della partizione è soddisfatto. Inoltre, il numero di schemi diversi non ha superato il numero di cluster e il limite di dimensione del cluster non viene superato.

Esempio 2: Supponiamo che la cartella DOC-EXAMPLE-FOLDER2 abbia 10 file, 7 file con lo schema SCH_A e 3 file con lo schema SCH_B.

Quando il crawler esegue la ricerca per indicizzazione del percorso Amazon S3 s3://DOC-EXAMPLE-FOLDER2, il crawler crea una tabella per ogni file. Questo perché il 70% dei file appartiene allo schema SCH_A e il 30% dei file appartiene allo schema SCH_B. Ciò significa che la soglia di partizione non è soddisfatta. È possibile controllare i registri del crawler in Amazon CloudWatch per ottenere informazioni sulle tabelle create.

Opzioni crawler

  • Crea un singolo schema: Per configurare il crawler in modo che ignori la somiglianza degli schemi e crei un solo schema, utilizza l'opzione Crea un singolo schema per ogni percorso S3. Per ulteriori informazioni, consulta Come creare un singolo schema per ogni percorso di inclusione di Amazon S3. Tuttavia, se il crawler rileva incompatibilità dei dati, questo crea ancora più tabelle.
  • Specifica la posizione della tabella: L'opzione crawler a livello di tabella consente di indicare al crawler dove si trovano le tabelle e come devono essere create le partizioni. Quando specifichi un valore a livello di tabella, la tabella viene creata a quel livello assoluto dal bucket Amazon S3. Quando configuri il crawler sulla console, è possibile specificare un valore per l'opzione crawler a livello di tabella. Il valore deve essere un numero intero positivo che indica la posizione della tabella (il livello assoluto nel set di dati). Il livello per la cartella di primo livello è 1. Ad esempio, per il percorso mydataset/a/b, se il livello è impostato su 3, la tabella viene creata nella posizione mydataset/a/b. Per ulteriori informazioni, consulta Come specificare la posizione della tabella.

Questo articolo ti è stato utile?


Hai bisogno di supporto tecnico o per la fatturazione?