In che modo un crawler determina quando creare le partizioni? - AWS Glue

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

In che modo un crawler determina quando creare le partizioni?

Quando un crawler AWS Glue analizza Amazon S3 e rileva più cartelle in un bucket, determina la root di una tabella nella struttura di cartelle e quali cartelle sono partizioni di una tabella. Il nome della tabella si basa sul prefisso Amazon S3 o sul nome della cartella. Si deve specificare un Include path (Percorso di inclusione) che indichi il livello della cartella su cui eseguire il crawling. Quando la maggior parte degli schemi a un livello della cartella sono simili, il crawler crea partizioni di una tabella invece di tabelle separate. Per fare in modo che il crawler crei tabelle separate, aggiungere ogni cartella radice della tabella come archivio dati separato quando si definisce il crawler.

Considera, ad esempio, la seguente struttura di cartelle Amazon S3.

I rettangoli su più livelli rappresentano una gerarchia di cartelle in Amazon S3. Il rettangolo superiore è etichettato Sales. Rettangolo sotto che è etichettato year=2019. Due rettangoli sotto etichettati month=Jan emonth=Feb. Ciascuno di questi rettangoli presenta due rettangoli sotto, etichettati day=1 e day=2. Tutti e quattro i rettangoli "day" (in basso) hanno due o quattro file sotto. Tutti i rettangoli e i file sono collegati da linee.

I percorsi alle quattro cartelle più in basso sono i seguenti:

S3://sales/year=2019/month=Jan/day=1 S3://sales/year=2019/month=Jan/day=2 S3://sales/year=2019/month=Feb/day=1 S3://sales/year=2019/month=Feb/day=2

Supponiamo che la destinazione del crawler sia impostata su Sales e che tutti i file nelle cartelle day=n siano nello stesso formato (ad esempio, JSON, non crittografato) e abbiano schemi uguali o molto simili. Il crawler creerà una singola tabella con quattro partizioni, con chiavi di partizione year, month, e day.

Nel prossimo esempio consideriamo la seguente struttura di cartelle Amazon S3:

s3://bucket01/folder1/table1/partition1/file.txt s3://bucket01/folder1/table1/partition2/file.txt s3://bucket01/folder1/table1/partition3/file.txt s3://bucket01/folder1/table2/partition4/file.txt s3://bucket01/folder1/table2/partition5/file.txt

Se gli schemi per i file sotto table1 e table2 sono simili e nel crawler viene definito un unico archivio dati con Include path (Percorso di inclusione) s3://bucket01/folder1/, il crawler crea un'unica tabella con due colonne delle chiavi di partizione. La prima colonna delle chiavi di partizione contiene table1 e table2 e la seconda colonna delle chiavi di partizione contiene da partition1 a partition3 per la partizione table1 e partition4 e partition5 per la partizione table2. Per creare due tabelle separate, definire il crawler con due archivi dati. In questo esempio, definire il primo Include path (Percorso di inclusione) come s3://bucket01/folder1/table1/ e il secondo come s3://bucket01/folder1/table2.

Nota

In Amazon Athena, ogni tabella corrisponde a un prefisso Amazon S3 con tutti gli oggetti contenuti. Se gli oggetti hanno schemi diversi, Athena non riconosce gli oggetti diversi all'interno dello stesso prefisso come tabelle separate. Questo può verificarsi se un crawler crea più tabelle dallo stesso prefisso Amazon S3. In questo caso, alcune query in Athena possono restituire zero risultati. Perché Athena riconosca correttamente le tabelle ed esegua query sulle tabelle, crea il crawler con un Include path (Percorso di inclusione) separato per ogni schema di tabella diverso nella struttura di cartelle Amazon S3. Per ulteriori informazioni, consulta Best practice durante l'utilizzo di Athena con AWS Glue e questo articolo del Portale del sapere AWS.