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à.
Crea una pipeline ETL di servizi per caricare i dati in modo incrementale da Amazon S3 ad Amazon Redshift utilizzando Glue AWS
Creato da Rohan Jamadagni () e Arunabha Datta () AWS AWS
Ambiente: produzione | Tecnologie: analisi; data lake; archiviazione e backup | AWSservizi: Amazon Redshift; Amazon S3; GlueAWS; Lambda AWS |
Riepilogo
Questo modello fornisce indicazioni su come configurare Amazon Simple Storage Service (Amazon S3) per prestazioni ottimali del data lake e quindi caricare modifiche incrementali ai dati da Amazon S3 in Amazon Redshift utilizzando AWS Glue, eseguendo operazioni di estrazione, trasformazione e caricamento (). ETL
I file di origine in Amazon S3 possono avere diversi formati, inclusi valori separati da virgole (CSV) e file. XML JSON Questo modello descrive come utilizzare AWS Glue per convertire i file sorgente in un formato ottimizzato in termini di costi e prestazioni come Apache Parquet. Puoi interrogare i file Parquet direttamente da Amazon Athena e Amazon Redshift Spectrum. Puoi anche caricare file Parquet in Amazon Redshift, aggregarli e condividere i dati aggregati con i consumatori o visualizzare i dati utilizzando Amazon. QuickSight
Prerequisiti e limitazioni
Prerequisiti
Un account AWS attivo.
Un bucket sorgente S3 che ha i privilegi giusti e contiene o file. CSV XML JSON
Ipotesi
I file CSVXML, o JSON sorgente sono già caricati in Amazon S3 e sono accessibili dall'account in cui sono configurati AWS Glue e Amazon Redshift.
Vengono seguite le best practice per il caricamento dei file, la suddivisione dei file, la compressione e l'utilizzo di un manifesto, come illustrato nella documentazione di Amazon Redshift.
La struttura del file di origine è inalterata.
Il sistema di origine è in grado di importare dati in Amazon S3 seguendo la struttura delle cartelle definita in Amazon S3.
Il cluster Amazon Redshift si estende su una singola zona di disponibilità. (Questa architettura è appropriata perché AWS Lambda, AWS Glue e Amazon Athena sono serverless.) Per un'elevata disponibilità, le istantanee del cluster vengono scattate con una frequenza regolare.
Limitazioni
I formati di file sono limitati a quelli attualmente supportati da AWS Glue.
La reportistica downstream in tempo reale non è supportata.
Architettura
Stack tecnologico di origine
Bucket S3 con o CSV file XML JSON
Stack tecnologico Target
Data lake S3 (con archiviazione di file Parquet partizionata)
Amazon Redshift
Architettura Target
Flusso di dati
Strumenti
Amazon S3 — Amazon Simple
Storage Service (Amazon S3) è un servizio di storage di oggetti altamente scalabile. Amazon S3 può essere utilizzato per un'ampia gamma di soluzioni di storage, tra cui siti Web, applicazioni mobili, backup e data lake. AWSLambda
: AWS Lambda consente di eseguire codice senza effettuare il provisioning o gestire i server. AWSLambda è un servizio basato sugli eventi; puoi configurare il codice per l'avvio automatico da altri servizi. AWS Amazon Redshift — Amazon Redshift
è un servizio di data warehouse completamente gestito su scala petabyte. Con Amazon Redshift, puoi interrogare petabyte di dati strutturati e semistrutturati nel tuo data warehouse e nel tuo data lake utilizzando standard. SQL AWSGlue
— AWS Glue è un ETL servizio completamente gestito che semplifica la preparazione e il caricamento dei dati per l'analisi. AWSGlue rileva i tuoi dati e memorizza i metadati associati (ad esempio, definizioni di tabelle e schemi) nel AWS Glue Data Catalog. I dati catalogati sono immediatamente ricercabili, possono essere interrogati e sono disponibili per. ETL AWSSecrets Manager
— AWS Secrets Manager facilita la protezione e la gestione centralizzata dei segreti necessari per l'accesso alle applicazioni o ai servizi. Il servizio archivia le credenziali, API le chiavi e altri segreti del database ed elimina la necessità di codificare le informazioni sensibili in formato testo semplice. Secrets Manager offre anche la rotazione delle chiavi per soddisfare le esigenze di sicurezza e conformità. Ha un'integrazione integrata per Amazon Redshift, Amazon Relational Database Service (AmazonRDS) e Amazon DocumentDB. È possibile archiviare e gestire centralmente i segreti utilizzando la console Secrets Manager, l'interfaccia a riga di comando (CLI) o Secrets Manager API e. SDKs Amazon Athena
— Amazon Athena è un servizio di query interattivo che semplifica l'analisi dei dati archiviati in Amazon S3. Athena è serverless e integrata con AWS Glue, quindi può interrogare direttamente i dati catalogati utilizzando Glue. AWS Athena è scalabile in modo elastico per offrire prestazioni di query interattive.
Epiche
Attività | Descrizione | Competenze richieste |
---|---|---|
Analizza i sistemi di origine per la struttura e gli attributi dei dati. | Esegui questa attività per ogni fonte di dati che contribuisce al data lake Amazon S3. | Ingegnere dei dati |
Definisci la strategia di partizione e accesso. | Questa strategia dovrebbe basarsi sulla frequenza dell'acquisizione dei dati, sull'elaborazione delta e sulle esigenze di consumo. Assicurati che i bucket S3 non siano aperti al pubblico e che l'accesso sia controllato solo da politiche specifiche basate sui ruoli di servizio. Per ulteriori informazioni, consulta la Documentazione di Amazon S3. | Ingegnere dei dati |
Crea bucket S3 separati per ogni tipo di origine dati e un bucket S3 separato per origine per i dati elaborati (Parquet). | Crea un bucket separato per ogni fonte, quindi crea una struttura di cartelle basata sulla frequenza di inserimento dei dati del sistema di origine, ad esempio. | Ingegnere dei dati |
Attività | Descrizione | Competenze richieste |
---|---|---|
Avvia il cluster Amazon Redshift con i gruppi di parametri e la strategia di manutenzione e backup appropriati. | Usa il segreto del database Secrets Manager per le credenziali degli utenti amministratori durante la creazione del cluster Amazon Redshift. Per informazioni sulla creazione e il dimensionamento di un cluster Amazon Redshift, consulta la documentazione di Amazon Redshift e il white paper di Sizing Cloud Data Warehouses | Ingegnere dei dati |
Crea e collega il ruolo IAM di servizio al cluster Amazon Redshift. | Il ruolo del servizio AWS Identity and Access Management (IAM) garantisce l'accesso a Secrets Manager e ai bucket S3 di origine. Per ulteriori informazioni, consulta la AWS documentazione sull'autorizzazione e l'aggiunta di un ruolo. | Ingegnere dei dati |
Crea lo schema del database. | Segui le best practice di Amazon Redshift per la progettazione di tabelle. In base al caso d'uso, scegli le chiavi di ordinamento e distribuzione appropriate e la migliore codifica di compressione possibile. Per le migliori pratiche, consulta la AWSdocumentazione. | Ingegnere dei dati |
Configura la gestione del carico di lavoro. | Configura le code di gestione del carico di lavoro (WLM), l'accelerazione delle query brevi (SQA) o la scalabilità simultanea, a seconda delle tue esigenze. Per ulteriori informazioni, consulta Implementazione della gestione del carico di lavoro nella documentazione di Amazon Redshift. | Ingegnere dei dati |
Attività | Descrizione | Competenze richieste |
---|---|---|
Crea un nuovo segreto per archiviare le credenziali di accesso di Amazon Redshift in Secrets Manager. | Questo segreto memorizza le credenziali per l'utente amministratore e per i singoli utenti del servizio di database. Per istruzioni, consulta la documentazione di Secrets Manager. Scegli Amazon Redshift Cluster come tipo segreto. Inoltre, nella pagina di rotazione segreta, attiva la rotazione. Questo creerà l'utente appropriato nel cluster Amazon Redshift e ruoterà i segreti chiave a intervalli definiti. | Ingegnere dei dati |
Crea una IAM politica per limitare l'accesso a Secrets Manager. | Limita l'accesso a Secrets Manager solo agli amministratori di Amazon Redshift e a Glue. AWS | Ingegnere dei dati |
Attività | Descrizione | Competenze richieste |
---|---|---|
Nel AWS Glue Data Catalog, aggiungi una connessione per Amazon Redshift. | Per istruzioni, consulta la documentazione di AWS Glue. | Ingegnere dei dati |
Crea e associa un ruolo IAM di servizio per AWS Glue per accedere a Secrets Manager, Amazon Redshift e bucket S3. | Per ulteriori informazioni, consulta la documentazione di AWS Glue. | Ingegnere dei dati |
Definire il AWS Glue Data Catalog per l'origine. | Questo passaggio prevede la creazione di un database e delle tabelle obbligatorie nel AWS Glue Data Catalog. Puoi utilizzare un crawler per catalogare le tabelle nel database AWS Glue o definirle come tabelle esterne di Amazon Athena. Puoi anche accedere alle tabelle esterne definite in Athena tramite AWS Glue Data Catalog. Consulta la AWS documentazione per ulteriori informazioni sulla definizione del Data Catalog e sulla creazione di una tabella esterna in Athena. | Ingegnere dei dati |
Crea un lavoro AWS Glue per elaborare i dati di origine. | Il job AWS Glue può essere usato come shell Python o PySpark per standardizzare, deduplicare e pulire i file dei dati di origine. Per ottimizzare le prestazioni ed evitare di dover interrogare l'intero bucket di origine S3, partiziona il bucket S3 per data, suddiviso per anno, mese, giorno e ora come predicato pushdown per il job Glue. AWS Per ulteriori informazioni, consulta la documentazione di AWS Glue. Carica i dati elaborati e trasformati nelle partizioni del bucket S3 elaborate in formato Parquet. È possibile interrogare i file Parquet da Athena. | Ingegnere dei dati |
Crea un lavoro AWS Glue per caricare dati in Amazon Redshift. | Il job AWS Glue può essere una shell Python o PySpark caricare i dati invertendo i dati, seguito da un aggiornamento completo. Per i dettagli, consulta la documentazione di AWS Glue e la sezione Informazioni aggiuntive. | Ingegnere dei dati |
(Facoltativo) Pianifica i lavori AWS Glue utilizzando i trigger, se necessario. | Il caricamento incrementale dei dati è principalmente determinato da un evento Amazon S3 che fa sì che una funzione AWS Lambda chiami il job Glue. AWS Utilizza AWS la pianificazione basata su trigger Glue per tutti i caricamenti di dati che richiedono una pianificazione basata sul tempo anziché una pianificazione basata sugli eventi. | Ingegnere dei dati |
Attività | Descrizione | Competenze richieste |
---|---|---|
Crea e associa un ruolo IAM collegato al servizio per AWS Lambda per accedere ai bucket S3 e al job Glue. AWS | Crea un ruolo IAM collegato ai servizi per AWS Lambda con una policy per leggere oggetti e bucket Amazon S3 e una policy per accedere a Glue per avviare un job AWS Glue. API AWS Per ulteriori informazioni, consulta il Knowledge Center. | Ingegnere dei dati |
Crea una funzione Lambda per eseguire il job AWS Glue in base all'evento Amazon S3 definito. | La funzione Lambda deve essere avviata con la creazione del file manifest di Amazon S3. La funzione Lambda deve passare la posizione della cartella Amazon S3 (ad esempio, source_bucket/year/month/date/hour) al job Glue come parametro. AWS Il job AWS Glue utilizzerà questo parametro come predicato pushdown per ottimizzare l'accesso ai file e le prestazioni di elaborazione del lavoro. Per ulteriori informazioni, consulta la documentazione di AWS Glue. | Ingegnere dei dati |
Crea un evento PUT oggetto Amazon S3 per rilevare la creazione di oggetti e chiama la rispettiva funzione Lambda. | L'evento PUT oggetto Amazon S3 deve essere avviato solo con la creazione del file manifest. Il file manifest controlla la funzione Lambda e la concorrenza del job AWS Glue ed elabora il carico come batch invece di elaborare singoli file che arrivano in una partizione specifica del bucket di origine S3. Per ulteriori informazioni, consulta la documentazione di Lambda. | Ingegnere dei dati |
Risorse correlate
Informazioni aggiuntive
Approccio dettagliato per un aggiornamento tempestivo e completo
Upsert: è destinato ai set di dati che richiedono l'aggregazione storica, a seconda del caso d'uso aziendale. Segui uno degli approcci descritti in Aggiornamento e inserimento di nuovi dati (documentazione di Amazon Redshift) in base alle tue esigenze aziendali.
Aggiornamento completo: questo è per piccoli set di dati che non necessitano di aggregazioni storiche. Segui uno di questi approcci:
Tronca la tabella Amazon Redshift.
Carica la partizione corrente dall'area di staging
oppure:
Crea una tabella temporanea con i dati della partizione corrente.
Elimina la tabella Amazon Redshift di destinazione.
Rinomina la tabella temporanea nella tabella di destinazione.