Personalizzazione del comportamento del crawler - 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à.

Personalizzazione del comportamento del crawler

Durante l'esecuzione, un crawler può rilevare modifiche nel datastore che fanno sì che uno schema o una partizione siano diversi rispetto a un'operazione di crawling precedente. Puoi utilizzare l'API AWS Management Console o l'AWS GlueAPI per configurare il modo in cui il crawler elabora determinati tipi di modifiche.

Console

Quando definisci un crawler usando la console AWS Glue, puoi scegliere tra diverse opzioni per configurare il comportamento del crawler. Per ulteriori informazioni sull'uso della console AWS Glue per aggiungere un crawler, consulta Configurazione di un crawler.

Quando un crawler viene eseguito su un datastore precedentemente sottoposto a crawling, può rilevare che uno schema è stato modificato o che alcuni oggetti nel datastore sono stati eliminati. Il crawler registra le modifiche in uno schema. A seconda del tipo di origine per il crawler, è possibile che vengano create nuove tabelle e partizioni indipendentemente dalla policy di modifica dello schema.

Per specificare il comportamento del crawler quando trova modifiche nello schema, puoi scegliere una delle operazioni seguenti nella console:

  • Update the table definition in the Data Catalog (Aggiorna definizione di tabella nel catalogo dati): puoi aggiungere nuove colonne, rimuovere colonne mancanti e modificare le definizioni di colonne esistenti in AWS Glue Data Catalog. Rimuove inoltre tutti i metadati non impostati dal crawler. Si tratta dell'impostazione di default.

  • Add new columns only (Aggiungi solo nuove colonne): per le tabelle mappate a un datastore Amazon S3, puoi aggiungere nuove colonne man mano che vengono rilevate, senza rimuovere o modificare il tipo delle colonne esistenti nel catalogo dati. Scegli questa opzione quando le colonne correnti nel catalogo dati sono corrette e non vuoi che il crawler rimuova o modifichi il tipo delle colonne esistenti. Se un attributo essenziale di una tabella Amazon S3 cambia, ad esempio una classificazione, un tipo di compressione o un delimitatore per file CSV, contrassegna la tabella come obsoleta. Puoi mantenere il formato di input e di output esistenti nel catalogo dati. Aggiorna SerDe i parametri solo se il parametro è impostato dal crawler. Per tutti gli altri datastore, puoi modificare le definizioni delle colonne esistenti.

  • Ignore the change and don't update the table in the Data Catalog (Ignora la modifica e non aggiornare la tabella nel catalogo dati): vengono create solo nuove tabelle e partizioni.

    Questa è l'impostazione predefinita per i crawling incrementali.

Un crawler potrebbe anche rilevare partizioni nuove o modificate. Per impostazione predefinita, le nuove partizioni vengono aggiunte e le partizioni esistenti vengono aggiornate se sono state modificate. Inoltre, puoi impostare l'opzione di configurazione del crawler Update all new and existing partitions with metadata from the table (Aggiorna tutte le partizioni nuove ed esistenti con metadati della tabella) nella console AWS Glue. Quando questa opzione è impostata, le partizioni ereditano le proprietà dei metadati, come la classificazione, il formato di input, il formato di output, le informazioni e lo schema, dalla tabella principale. SerDe Tutte le modifiche apportate a queste proprietà in una tabella vengono propagate alle partizioni. Quando questa opzione di configurazione è impostata su un crawler esistente, le partizioni esistenti vengono aggiornate in modo che corrispondano alle proprietà della tabella padre alla prossima esecuzione del crawler.

Per specificare il comportamento del crawler quando trova un oggetto eliminato nel datastore, scegli una delle operazioni seguenti:

  • Elimina tabelle e partizioni dal catalogo dati

  • Ignora la modifica e non aggiornare la tabella nel catalogo dati

    Questa è l'impostazione predefinita per i crawling incrementali.

  • Mark the table as deprecated in the Data Catalog (Contrassegna la tabella come obsoleta nel catalogo dati: questa è l'impostazione predefinita.

AWS CLI
aws glue create-crawler \ --name "your-crawler-name" \ --role "your-iam-role-arn" \ --database-name "your-database-name" \ --targets 'S3Targets=[{Path="s3://your-bucket-name/path-to-data"}]' \ --configuration '{"Version": 1.0, "CrawlerOutput": {"Partitions": {"AddOrUpdateBehavior": "InheritFromTable"}, "Tables": {"AddOrUpdateBehavior": "MergeNewColumns"}}}'
API

Quando definisci un crawler utilizzando l' AWS Glue API, puoi scegliere tra diversi campi per configurare il crawler. Il campo SchemaChangePolicy nell'API del crawler determina il comportamento del crawler quando rileva uno schema modificato o un oggetto eliminato. Durante l'esecuzione, il crawler registra le modifiche dello schema.

Esempio di codice Python che mostra le opzioni di configurazione del crawler

import boto3 import json # Initialize a boto3 client for AWS Glue glue_client = boto3.client('glue', region_name='us-east-1') # Replace 'us-east-1' with your desired AWS region # Define the crawler configuration crawler_configuration = { "Version": 1.0, "CrawlerOutput": { "Partitions": { "AddOrUpdateBehavior": "InheritFromTable" }, "Tables": { "AddOrUpdateBehavior": "MergeNewColumns" } } } configuration_json = json.dumps(crawler_configuration) # Create the crawler with the specified configuration response = glue_client.create_crawler( Name='your-crawler-name', # Replace with your desired crawler name Role='crawler-test-role', # Replace with the ARN of your IAM role for Glue DatabaseName='default', # Replace with your target Glue database name Targets={ 'S3Targets': [ { 'Path': "s3://your-bucket-name/path/", # Replace with your S3 path to the data }, ], # Include other target types like 'JdbcTargets' if needed }, Configuration=configuration_json, # Include other parameters like Schedule, Classifiers, TablePrefix, SchemaChangePolicy, etc., as needed ) print(response)a

Quando viene eseguito un crawler, vengono create sempre nuove tabelle e partizioni indipendentemente dalle policy di modifica dello schema. Puoi scegliere una delle operazioni seguenti nel campo UpdateBehavior nella struttura SchemaChangePolicy per determinare il comportamento del crawler quando trova uno schema di tabella modificato:

  • UPDATE_IN_DATABASE: aggiorna la tabella nel AWS Glue Data Catalog. Aggiunge nuove colonne, rimuove le colonne mancanti e modifica le definizioni delle colonne esistenti. Rimuove inoltre tutti i metadati non impostati dal crawler.

  • LOG: ignora le modifiche e non aggiorna la tabella nel catalogo dati.

    Questa è l'impostazione predefinita per i crawling incrementali.

Puoi anche sostituire la struttura SchemaChangePolicy usando un oggetto JSON fornito nel campo Configuration dell'API del crawler. Questo oggetto JSON può contenere una coppia chiave/valore per impostare la policy in modo da non aggiornare colonne esistenti e aggiungere solo nuove colonne. Ad esempio, puoi specificare l'oggetto JSON seguente come stringa:

{ "Version": 1.0, "CrawlerOutput": { "Tables": { "AddOrUpdateBehavior": "MergeNewColumns" } } }

Questa opzione corrisponde all'opzione Add new columns only (Aggiungi solo nuove colonne) nella console AWS Glue. L'opzione sostituisce la struttura SchemaChangePolicy solo per tabelle derivanti dal crawling di datastore Amazon S3. Scegli questa opzione se vuoi mantenere i metadati esistenti nel catalogo dati ("source of truth"). Le nuove colonne vengono aggiunte man mano che vengono rilevate, inclusi i tipi di dati annidati. Tuttavia, le colonne esistenti non vengono rimosse e i rispettivi tipi non vengono modificati. Se un attributo di una tabella Amazon S3 cambia in misura significativa, puoi contrassegnare la tabella come obsoleta e registrare un avviso riguardo alla necessità di risolvere un attributo non compatibile. Questa opzione non è applicabile al crawler incrementale.

Quando un crawler viene eseguito su un datastore sottoposto precedentemente a crawling, potrebbe scoprire partizioni nuove o modificate. Per impostazione predefinita, le nuove partizioni vengono aggiunte e le partizioni esistenti vengono aggiornate se sono state modificate. Inoltre, puoi impostare l'opzione di configurazione del crawler InheritFromTable, corrispondente all'opzione Update all new and existing partitions with metadata from the table (Aggiorna tutte le partizioni nuove ed esistenti con i metadati della tabella) nella console AWS Glue. Quando questa opzione è impostata, le partizioni ereditano le proprietà dei metadati dalla tabella principale, come la classificazione, il formato di input, il formato di output, le informazioni e lo schema. SerDe Tutte le modifiche di proprietà rilevate nella tabella madre vengono propagate alle partizioni.

Quando questa opzione di configurazione è impostata su un crawler esistente, le partizioni esistenti vengono aggiornate in modo che corrispondano alle proprietà della tabella padre alla prossima esecuzione del crawler. Questo comportamento viene impostato nel campo Configuration dell'API del crawler. Ad esempio, puoi specificare l'oggetto JSON seguente come stringa:

{ "Version": 1.0, "CrawlerOutput": { "Partitions": { "AddOrUpdateBehavior": "InheritFromTable" } } }

Il campo Configuration dell'API del crawler può impostare più opzioni di configurazione. Ad esempio, per configurare l'output del crawler per partizioni e tabelle, puoi specificare una rappresentazione di stringa dell'oggetto JSON seguente:

{ "Version": 1.0, "CrawlerOutput": { "Partitions": { "AddOrUpdateBehavior": "InheritFromTable" }, "Tables": {"AddOrUpdateBehavior": "MergeNewColumns" } } }

Puoi scegliere una delle operazioni seguenti per determinare il comportamento del crawler quando trova un oggetto eliminato nel datastore. Il campo DeleteBehavior nella struttura SchemaChangePolicy nell'API del crawler imposta il comportamento del crawler quando rileva un oggetto eliminato.

  • DELETE_FROM_DATABASE: elimina tabelle e partizioni dal catalogo dati.

  • LOG: ignora la modifica. Non aggiornare il catalogo dati. Scrivi un messaggio di log.

  • DEPRECATE_IN_DATABASE: contrassegna la tabella come obsoleta nel catalogo dati. Si tratta dell'impostazione di default.