Flux de lucru gestionat de Amazon pentru Apache Airflow (Amazon MWAA) este un serviciu gestionat care vă permite să utilizați un familiar Flux de aer Apache mediu cu scalabilitate, disponibilitate și securitate îmbunătățite pentru a îmbunătăți și scala fluxurile de lucru ale afacerii fără sarcina operațională a gestionării infrastructurii de bază. În fluxul de aer, Grafice aciclice direcționate (DAG) sunt definite ca cod Python. DAG-uri dinamice se referă la capacitatea de a genera DAG-uri din mers în timpul rulării, de obicei pe baza unor condiții, configurații sau parametri externi. DAG-urile dinamice vă ajută să creați, să programați și să rulați sarcini în cadrul unui DAG pe baza datelor și a configurațiilor care se pot schimba în timp.
Există diferite moduri de a introduce dinamism în DAG-urile Airflow (generare dinamică de DAG) folosind variabile de mediu și fișiere externe. Una dintre abordări este utilizarea Fabrica DAG Metoda fișierului de configurare bazată pe YAML. Această bibliotecă își propune să faciliteze crearea și configurarea noilor DAG-uri prin utilizarea parametrilor declarativi în YAML. Permite personalizări implicite și este open-source, ceea ce face simplă crearea și personalizarea de noi funcționalități.
În această postare, explorăm procesul de creare a DAG-urilor dinamice cu fișiere YAML, folosind Fabrica DAG bibliotecă. DAG-urile dinamice oferă mai multe beneficii:
- Reutilizabilitate îmbunătățită a codului - Prin structurarea DAG-urilor prin fișiere YAML, promovăm componente reutilizabile, reducând redundanța în definițiile fluxului de lucru.
- Întreținere simplificată - Generarea DAG bazată pe YAML simplifică procesul de modificare și actualizare a fluxurilor de lucru, asigurând proceduri de întreținere mai fluide.
- Parametrizare flexibilă – Cu YAML, puteți parametriza configurațiile DAG, facilitând ajustările dinamice ale fluxurilor de lucru în funcție de cerințe diferite.
- Eficiență îmbunătățită a planificatorului - DAG-urile dinamice permit o programare mai eficientă, optimizarea alocării resurselor și îmbunătățirea fluxului de lucru general
- Scalabilitate îmbunătățită - DAG-urile bazate pe YAML permit rulări paralele, permițând fluxuri de lucru scalabile capabile să gestioneze în mod eficient sarcinile de lucru crescute.
Prin valorificarea puterii fișierelor YAML și a bibliotecii DAG Factory, lansăm o abordare versatilă pentru construirea și gestionarea DAG-urilor, dându-vă puterea să creați conducte de date robuste, scalabile și care pot fi întreținute.
Prezentare generală a soluției
În această postare, vom folosi un exemplu de fișier DAG care este conceput pentru a procesa un set de date COVID-19. Procesul fluxului de lucru implică procesarea unui set de date open source oferit de OMS-COVID-19-Global. După ce instalăm DAG-Factory Pachetul Python, creăm un fișier YAML care are definiții ale diferitelor sarcini. Procesăm numărul de decese specifice țării prin trecere Country
ca o variabilă, care creează DAG-uri individuale bazate pe țară.
Următoarea diagramă ilustrează soluția generală împreună cu fluxurile de date din blocurile logice.
Cerințe preliminare
Pentru această prezentare generală, ar trebui să aveți următoarele condiții prealabile:
În plus, parcurgeți următorii pași (rulați configurarea într-un Regiunea AWS unde este disponibil Amazon MWAA):
- Creați o Mediul Amazon MWAA (dacă nu ai deja unul). Dacă este prima dată când utilizați Amazon MWAA, consultați Vă prezentăm fluxurile de lucru gestionate Amazon pentru Apache Airflow (MWAA).
Asigurați-vă că Gestionarea identității și accesului AWS utilizatorul (IAM) sau rolul utilizat pentru configurarea mediului are politici IAM atașate pentru următoarele permisiuni:
Politicile de acces menționate aici sunt doar pentru exemplul din această postare. Într-un mediu de producție, furnizați doar permisiunile granulare necesare prin exercițiu principiile celui mai mic privilegiu.
- Creați un nume unic (în cadrul unui cont) Amazon S3 în timp ce vă creați mediul Amazon MWAA și creați foldere numite
dags
șirequirements
. - Creați și încărcați un
requirements.txt
fișier cu următorul conținut larequirements
pliant. A inlocui{environment-version}
cu numărul de versiune al mediului dvs. și{Python-version}
cu versiunea de Python care este compatibilă cu mediul dvs.:
Pandas este necesar doar pentru exemplul de caz de utilizare descris în această postare și dag-factory
este singurul plug-in necesar. Este recomandat să verificați compatibilitatea celei mai recente versiuni a dag-factory
cu Amazon MWAA. The boto
și psycopg2-binary
bibliotecile sunt incluse cu instalarea de bază Apache Airflow v2 și nu trebuie să fie specificate în dvs requirements.txt
fișier.
- Descărcați Fișier de date globale OMS-COVID-19 pe mașina dvs. locală și încărcați-l sub
dags
prefixul găleții dvs. S3.
Asigurați-vă că indicați cea mai recentă versiune de bucket AWS S3 a dvs requirements.txt
fișier pentru ca instalarea pachetului suplimentar să aibă loc. Acest lucru ar trebui să dureze de obicei între 15 și 20 de minute, în funcție de configurația mediului.
Validați DAG-urile
Când mediul dvs. Amazon MWAA arată ca Disponibil pe consola Amazon MWAA, navigați la interfața de utilizare a fluxului de aer alegând Deschideți interfața de utilizare a fluxului de aer lângă mediul tău.
Verificați DAG-urile existente navigând la fila DAG-uri.
Configurați DAG-urile dvs
Urmați pașii următori:
- Creați fișiere goale numite
dynamic_dags.yml
,example_dag_factory.py
șiprocess_s3_data.py
pe aparatul local. - Editați
process_s3_data.py
fișier și salvați-l cu următorul conținut de cod, apoi încărcați fișierul înapoi în compartimentul Amazon S3dags
pliant. Facem o procesare de bază a datelor în cod:- Citiți fișierul dintr-o locație Amazon S3
- Redenumiți
Country_code
coloană după caz pentru țară. - Filtrați datele în funcție de țara dată.
- Scrieți datele finale procesate în format CSV și încărcați înapoi la prefixul S3.
- Editați
dynamic_dags.yml
și salvați-l cu următorul conținut de cod, apoi încărcați fișierul înapoi îndags
pliant. Cream diferite DAG-uri în funcție de țară, după cum urmează:- Definiți argumentele implicite care sunt transmise tuturor DAG-urilor.
- Creați o definiție DAG pentru țări individuale prin trecere
op_args
- Harta
process_s3_data
funcționează cupython_callable_name.
- Utilizare Operator Python pentru a procesa datele fișierului csv stocate în bucket Amazon S3.
- Am stabilit
schedule_interval
10 minute, dar nu ezitați să ajustați această valoare după cum este necesar.
- Editați fișierul
example_dag_factory.py
și salvați-l cu următorul conținut de cod, apoi încărcați fișierul înapoi îndags
pliant. Codul curăță DAG-urile existente și genereazăclean_dags()
metoda și crearea de noi DAG-uri folosindgenerate_dags()
metoda dinDagFactory
instanță.
- După ce încărcați fișierele, reveniți la consola Airflow UI și navigați la fila DAG-uri, unde veți găsi noi DAG-uri.
- Odată ce încărcați fișierele, reveniți la consola Airflow UI și sub fila DAG-uri, veți găsi noi DAG-uri care apar, după cum se arată mai jos:
Puteți activa DAG-urile activând și testându-le individual. La activare, un fișier CSV suplimentar numit count_death_{COUNTRY_CODE}.csv
este generat în folderul dags.
A curăța
Pot exista costuri asociate cu utilizarea diferitelor servicii AWS discutate în această postare. Pentru a preveni costurile viitoare, ștergeți mediul Amazon MWAA după ce ați finalizat sarcinile descrise în această postare și goliți și ștergeți compartimentul S3.
Concluzie
În această postare pe blog am demonstrat cum să folosim dag-fabrica bibliotecă pentru a crea DAG-uri dinamice. DAG-urile dinamice se caracterizează prin capacitatea lor de a genera rezultate cu fiecare parsare a fișierului DAG pe baza configurațiilor. Luați în considerare utilizarea DAG-urilor dinamice în următoarele scenarii:
- Automatizarea migrării de la un sistem vechi la Airflow, unde flexibilitatea în generarea DAG este crucială
- Situații în care doar un parametru se modifică între diferite DAG-uri, simplificând procesul de gestionare a fluxului de lucru
- Gestionarea DAG-urilor care se bazează pe structura în evoluție a unui sistem sursă, oferind adaptabilitate la schimbări
- Stabilirea de practici standardizate pentru DAG-urile din echipa sau organizația dvs. prin crearea acestor planuri, promovând coerența și eficiența
- Îmbrățișarea declarațiilor bazate pe YAML peste codarea complexă Python, simplificând procesele de configurare și întreținere DAG
- Crearea de fluxuri de lucru bazate pe date care se adaptează și evoluează pe baza intrărilor de date, permițând o automatizare eficientă
Încorporând DAG-uri dinamice în fluxul dvs. de lucru, puteți îmbunătăți automatizarea, adaptabilitatea și standardizarea, îmbunătățind în cele din urmă eficiența și eficacitatea gestionării canalului de date.
Pentru a afla mai multe despre Amazon MWAA DAG Factory, vizitați Atelierul Amazon MWAA pentru Analytics: DAG Factory. Pentru detalii suplimentare și exemple de cod pe Amazon MWAA, vizitați Ghidul utilizatorului Amazon MWAA si Amazon MWAA exemple GitHub repertoriu.
Despre Autori
Jayesh Shinde este arhitect senior de aplicații cu AWS ProServe India. El este specializat în crearea diverselor soluții care sunt centrate pe cloud, folosind practici moderne de dezvoltare de software, cum ar fi serverless, DevOps și analize.
Harshd Yeola este arhitect senior cloud cu AWS ProServe India, ajutând clienții să migreze și să își modernizeze infrastructura în AWS. El este specializat în construirea DevSecOps și a infrastructurii scalabile folosind containere, AIOP-uri și instrumente și servicii pentru dezvoltatori AWS.
- Distribuție de conținut bazat pe SEO și PR. Amplifică-te astăzi.
- PlatoData.Network Vertical Generative Ai. Împuterniciți-vă. Accesați Aici.
- PlatoAiStream. Web3 Intelligence. Cunoștințe amplificate. Accesați Aici.
- PlatoESG. carbon, CleanTech, Energie, Mediu inconjurator, Solar, Managementul deșeurilor. Accesați Aici.
- PlatoHealth. Biotehnologie și Inteligență pentru studii clinice. Accesați Aici.
- Sursa: https://aws.amazon.com/blogs/big-data/dynamic-dag-generation-with-yaml-and-dag-factory-in-amazon-mwaa/
- :are
- :este
- :Unde
- $UP
- 1
- 10
- 100
- 15%
- 19
- 2%
- 20
- 200
- 300
- 4
- 5
- 8
- a
- capacitate
- Despre Noi
- acces
- Cont
- peste
- Activarea
- activ
- aciclic
- adapta
- adaptabilitate
- Suplimentar
- regla
- ajustări
- După
- isi propune
- AI Ops
- TOATE
- alocare
- permite
- permite
- de-a lungul
- deja
- Amazon
- Amazon Web Services
- an
- Google Analytics
- și
- Orice
- Apache
- care apare
- aplicație
- abordare
- abordari
- adecvat
- SUNT
- argumente
- AS
- asociate
- atașat
- Australia
- Automatizare
- disponibilitate
- disponibil
- AWS
- înapoi
- de bază
- bazat
- de bază
- BE
- de mai jos
- Beneficiile
- între
- Blocuri
- Blog
- corp
- Brazilia
- Clădire
- povară
- afaceri
- dar
- by
- denumit
- CAN
- capabil
- caz
- centrat
- Schimbare
- Modificări
- caracterizat
- taxe
- verifica
- alegere
- curat
- Cloud
- cod
- Codificare
- Coloană
- compatibilitate
- compatibil
- Completă
- Terminat
- complex
- componente
- Condiții
- Configuraţie
- configuraţiile
- Lua în considerare
- consistenţă
- Consoleze
- Containere
- conţinut
- Cheltuieli
- conta
- țări
- ţară
- Specifice fiecărei țări
- Covid-19
- crea
- creează
- Crearea
- creaţie
- clienţii care
- personaliza
- DAG
- de date
- de prelucrare a datelor
- set de date
- Moarte
- Def
- Mod implicit
- definit
- definiție
- Definitii
- șterge
- demonstrat
- În funcție
- descris
- proiectat
- detalii
- Dezvoltator
- Dezvoltare
- DevOps
- diagramă
- diferit
- discutat
- face
- Dont
- condus
- în timpul
- dinamic
- fiecare
- eficacitate
- eficiență
- eficient
- eficient
- altfel
- împuternicirea
- gol
- permite
- permițând
- spori
- consolidarea
- asigurare
- Mediu inconjurator
- Eter (ETH)
- evolua
- evoluție
- exemplu
- exemple
- existent
- explora
- extern
- facilita
- facilitând
- fabrică
- familiar
- simţi
- Fișier
- Fişiere
- filtru
- final
- Găsi
- First
- prima dată
- Flexibilitate
- fluxurilor
- următor
- urmează
- Pentru
- format
- Gratuit
- din
- funcţie
- funcționalități
- viitor
- genera
- generată
- generează
- generaţie
- obține
- dat
- Go
- granular
- Manipularea
- întâmpla
- Cablaje
- Avea
- he
- ajutor
- ajută
- aici
- Cum
- Cum Pentru a
- HTML
- HTTPS
- IAM
- Identitate
- if
- ilustrează
- import
- îmbunătățit
- îmbunătățirea
- in
- inclus
- care încorporează
- a crescut
- India
- individ
- Individual
- Infrastructură
- intrări
- instala
- instalare
- instanță
- în
- introduce
- implică
- IT
- Japonia
- doar
- Ultimele
- AFLAȚI
- Moştenire
- Nivel
- biblioteci
- Bibliotecă
- ca
- Listă
- local
- logic
- maşină
- De întreținut
- întreținere
- Efectuarea
- gestionate
- administrare
- de conducere
- Mai..
- menționat
- metodă
- Mexic
- migra
- migrațiune
- minute
- Modern
- moderniza
- mai mult
- mai eficient
- nume
- Numit
- Navigaţi
- navigând
- Nevoie
- necesar
- Nou
- următor
- număr
- of
- oferi
- oferit
- on
- ONE
- afară
- deschide
- open-source
- operațional
- operator
- Operatorii
- optimizarea
- or
- organizație
- a subliniat
- peste
- global
- Prezentare generală
- proprietar
- pachet
- panda
- Paralel
- parametru
- parametrii
- Trecut
- Care trece
- permisiuni
- conducte
- Plato
- Informații despre date Platon
- PlatoData
- Politicile
- Post
- putere
- practicile
- premise
- împiedica
- privilegiu
- Proceduri
- proces
- prelucrate
- prelucrare
- producere
- promova
- Promovarea
- furniza
- furnizarea
- Piton
- Citeste
- recomandat
- reducerea
- trimite
- înlocui
- depozit
- necesar
- Cerinţe
- resursă
- răspuns
- REZULTATE
- reutilizabile
- robust
- Rol
- Alerga
- ruleaza
- Runtime
- Rusia
- Economisiți
- scalabilitate
- scalabil
- Scară
- scenarii
- programa
- programare
- securitate
- serverless
- serviciu
- Servicii
- set
- instalare
- configurarea
- câteva
- să
- indicat
- Emisiuni
- simplu
- Simplifică
- simplificarea
- mai lin
- Software
- de dezvoltare de software
- soluţie
- soluţii
- unele
- Sursă
- Spania
- specializată
- specificată
- standardizare
- standardizate
- Stare
- paşi
- stocate
- raționalizarea
- structura
- structurarea
- de succes
- sigur
- sistem
- Lua
- sarcini
- echipă
- Testarea
- acea
- lor
- Lor
- apoi
- Acestea
- acest
- Prin
- timp
- la
- Unelte
- top
- copac
- tipic
- ui
- în cele din urmă
- în
- care stau la baza
- unic
- dezlănțui
- actualizarea
- pe
- utilizare
- carcasa de utilizare
- utilizat
- Utilizator
- folosind
- VALIDA
- valoare
- variabil
- variabile
- diverse
- variabil
- verifica
- multilateral
- versiune
- Vizita
- walkthrough
- modalități de
- we
- web
- servicii web
- care
- în timp ce
- OMS
- voi
- cu
- în
- fără
- flux de lucru
- fluxuri de lucru
- atelier
- Ateliere
- scrie
- yaml
- tu
- Ta
- zephyrnet