Come il crawler di AWS Glue rileva lo schema?
Quando eseguo un crawler AWS Glue, il crawler crea più tabelle con schemi simili. Desidero sapere come il crawler rileva lo schema.
Risoluzione
Quando esegui un crawler AWS Glue, il crawler completa i seguenti passaggi:
- Classificazione dei dati.
- Raggruppamento dei dati in tabelle o partizioni.
- Scrittura dei metadati nel Catalogo dati AWS Glue.
Per capire cosa fa il crawler e come rileva lo schema, consulta le seguenti informazioni.
Definisci 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, utilizza il primo classificatore dell'elenco per riconoscere correttamente il datastore e creare uno schema per la tabella. Prima di definire il crawler, devi definire i classificatori personalizzati. Quando il crawler viene eseguito, utilizza il classificatore personalizzato definito dall'utente per trovare una corrispondenza nel datastore. La corrispondenza con ogni classificatore genera una certezza. Se il classificatore restituisce certainty=1.0 durante l'elaborazione, il crawler è sicuro al 100% di poter creare lo schema corretto. In questo caso, il crawler non invoca altri classificatori e crea una tabella con il classificatore che corrisponde al classificatore personalizzato.
Per ulteriori informazioni, consulta Definizione e gestione dei classificatori.
Rilevamento dello schema nel crawler
Durante la prima esecuzione del crawler, il crawler legge i primi 1.000 record o il primo megabyte di ogni file per dedurre lo schema. La quantità di dati letti dipende dal formato del file e dalla disponibilità di un record valido. Ad esempio, se il file di input è un file JSON, il crawler legge il primo MB del file per dedurre lo schema. Se il crawler legge un record valido entro il primo MB del file, ne deduce lo schema. Se il crawler non riesce a dedurre lo schema dopo 1 MB, continua a leggere fino a 10 MB del file con incrementi di 1 MB. Per i file CSV, il crawler legge i primi 1.000 record o il primo MB di dati, a seconda dell'evento che si verifica per primo. Per i file Parquet, il crawler deduce direttamente lo schema 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 incluso.
- Somiglianza dello schema per verificare la somiglianza degli schemi in termini di soglia di partizione e numero di schemi diversi.
Affinché un crawler consideri gli schemi simili, devono sussistere le seguenti condizioni:
- Soglia di partizione è superiore a 0,7 (70%).
- Numero massimo di schemi diversi, denominati anche "cluster" in questo contesto, non superiore a 5.
Il crawler deduce lo schema a livello di cartella e confronta gli schemi in tutte le cartelle. Se gli schemi confrontati corrispondono a una 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 e genera un numero maggiore di tabelle.
Scenari esemplificativi
Esempio 1
Nell'esempio seguente, la cartella DOC-EXAMPLE-FOLDER1 contiene 10 file, 8 file con schema SCH_A e 2 file con schema SCH_B.
Supponiamo che i file siano simili ai seguenti esempi:
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.
Esempio 2
Nell'esempio seguente, la cartella DOC-EXAMPLE-FOLDER2 contiene 10 file, 7 file con lo schema SCH_A e 3 file con schema SCH_B.
Quando il crawler esegue la scansione del percorso Amazon S3 s3://DOC-EXAMPLE-FOLDER2, 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 lo schema non soddisfa la soglia di partizione.
Nota: puoi controllare i log del crawler in Amazon CloudWatch per ottenere informazioni sulle tabelle create.
Opzioni del crawler
Quando personalizzi il comportamento del crawler, puoi scegliere una delle seguenti opzioni:
- Create a single schema (Crea un singolo schema): puoi utilizzare l'opzione Create a single schema for each S3 path (Crea un singolo schema per ogni percorso S3) per configurare il crawler in modo da ignorare la somiglianza dello schema e creare un singolo schema. Per ulteriori informazioni, consulta Creare un singolo schema per ogni percorso di inclusione Amazon S3.
Nota: se il crawler rileva un'incompatibilità di dati, crea comunque più tabelle. - Specify table location (Specifica la posizione della tabella): puoi utilizzare l'opzione del crawler a livello di tabella per specificare dove si trovano le tabelle e come vengono create le partizioni. Per ulteriori informazioni, consulta Specificare la posizione della tabella e il livello di partizionamento.
Informazioni correlate
