Come organizzare il processo di sviluppo con AWS DataPipeline?

0

Sto introducendo un Redshift per il mio team e diventa una sfida per fare un solido processo di sviluppo, quindi ho bisogno di alcune informazioni su come affrontarlo.

Innanzitutto, alcune informazioni sul layout corrente. Utilizziamo 3 envs per lo sviluppo (ENV LOCALE di ogni sviluppatore, TEST env, PROD) e stiamo usando Postgres come database principale. Per le modifiche DDL, stiamo creando script sql per un aggiornamento incrementale e sono applicati in modalità automatica per ogni ambiente durante la distribuzione. È solido e diretto.

Ora, dobbiamo fare alcuni rapporti analitici e Postgres non va affatto bene (problemi di prestazioni). Quindi ci stiamo muovendo per caricare regolarmente dati su Redshift. Come strumento per il trasferimento dei dati al momento attuale, utilizziamo AWS DataPipeline, ma è una sfida creare un processo solido. Quindi sto cercando un consiglio:

  1. I dati da redshift provengono da Postgres tramite i lavori di trasferimento dati (AWS DataPipeline), la prossima fase di lavori - i lavori che filtrano e reimballano i dati adatti ai rapporti. È molto difficile mantenere i dati uguali sugli invianti TEST e PROD: è necessario creare tutte le pipeline in 2 copie (o più nel caso in cui si abbia Redshift in un cloud) e assicurarsi di eseguirle tutte nello stesso ordinare in tempo utile per ottenere dati coerenti. Forse la pipeline di AWS Data non è lo strumento migliore per questo? O c'è un modo per tenere traccia del lavoro di trasferimento dati in modo solido, per essere sicuri che stiano lavorando contro due env nello stesso modo?

  2. C'è anche un problema con i lavori di trasferimento dati - non possono essere eseguiti localmente (AWS DatapipeLine è basato su cloud), quindi trascorri molto tempo avviandolo direttamente contro env TEST in un cloud, che potrebbe anche portare a dati errati su un env TEST, quindi è necessario ricreare il database da un dump (anche una perdita di tempo). Esistono soluzioni per lo sviluppo e il debug di questo tipo di lavoro (può essere correlato non solo allo strumento DataPipeline) localmente?

  3. La pipeline di dati di AWS viene creata tramite GUI, quindi esiste la possibilità di creare 2 lavori diversi per diversi envs, ma esiste un'opportunità per creare un lavoro dal file di configurazione JSON - in modo che possa essere memorizzato come codice . Qualunque buona pratica su come organizzare le versioni di per creare pipeline di dati durante il processo CI? Ricrea lavori su ogni schieramento? Qualunque strumento adatto per questo o forse script bash?

posta sphinks 09.10.2017 - 12:46
fonte

1 risposta

0
  1. Puoi usare AWS Glue per fare l'ETL. Le esperienze che ho ascoltato con AWS ETL sono che Glue è per ETL, Pipeline di dati per compiti semplici. La colla funzionerà in modo nativo con Redshift se si desidera una soluzione Amazon. Credo che tu possa semplicemente replicare il processo di colla sia in test che in ampli; prod, cambiando solo l'ID / endpoint. Hanno anche alcuni ETL pre-compilati in GitHub, forse potresti usare / modificare alcuni di questi per accelerare il processo. E Glue ha crawler per popolare il catalogo dati per te. Puoi creare il tuo codice in Python, quindi non hai bisogno di nulla di proprietario. Se vuoi saperne di più sulle funzionalità di Redshift, puoi andare su qui .

  2. C'è anche Matillion ETL per Redshift. Ha solide capacità ETL, ma è un altro prodotto da acquistare.

  3. Considera uno strumento ETL generale come Informatica, Alooma, Talend, ecc.

risposta data 22.03.2018 - 16:22
fonte

Leggi altre domande sui tag