Rakenna synteettinen dataputki Gretelin ja Apache Airflow'n avulla

Lähdesolmu: 1068200

Rakenna synteettinen dataputki Gretelin ja Apache Airflow'n avulla

Tässä blogikirjoituksessa rakennamme ETL -putkilinjan, joka tuottaa synteettistä tietoa PostgreSQL -tietokannasta käyttämällä Gretelin synteettisten tietojen sovellusliittymiä ja Apache Airflow: ta.


By Drew Newberry, Ohjelmistosuunnittelija paikassa Gretel.ai

Rakenna synteettinen dataputki Gretelin ja Apache Airflow'n avulla

Hei ihmiset, nimeni on Drew, ja olen ohjelmistosuunnittelija täällä Gretelissä. Olen viime aikoina miettinyt malleja Gretel-sovellusliittymien integroimiseksi olemassa oleviin työkaluihin, jotta on helppo rakentaa dataputkia, joissa turvallisuus ja asiakkaiden yksityisyys ovat ensiluokkaisia ​​ominaisuuksia, eivät vain jälkikäteen tai tarkistettavia ruutuja.

Yksi Gretel -insinöörien ja asiakkaiden keskuudessa suosittu tietotekniikkatyökalu on Apache Airflow. Se toimii myös hyvin Gretelin kanssa. Tässä blogikirjoituksessa näytämme sinulle, kuinka rakentaa synteettinen dataputki Airflow-, Gretel- ja PostgreSQL -tekniikoilla. Hyppäämme sisään!

Mikä on ilmavirta

 
 
Ilmavirta on työnkulun automatisointityökalu, jota käytetään yleisesti dataputkien rakentamiseen. Sen avulla data -insinöörit tai tiedetieteilijät voivat ohjelmoida näitä putkilinjoja ja ottaa ne käyttöön Pythonin ja muiden tuttujen rakenteiden avulla. Ilmavirran ytimessä on DAG -käsite tai suunnattu asyklinen kuvaaja. Airflow DAG tarjoaa mallin ja sovellusliittymien sarjan putkilinjan komponenttien, niiden riippuvuuksien ja suoritusjärjestyksen määrittämiseksi.

Saatat löytää Airflow -putkistoja, jotka kopioivat tietoja tuotetietokannasta tietovarastoon. Muut putkilinjat saattavat suorittaa kyselyitä, jotka yhdistävät normalisoidut tiedot yhdeksi tietojoukkoksi, joka soveltuu analytiikkaan tai mallinnukseen. Vielä yksi prosessi saattaa julkaista päivittäisen raportin, joka yhdistää liiketoiminnan keskeiset tiedot. Näiden käyttötapojen yhteinen teema: tiedonsiirron koordinointi järjestelmien välillä. Tässä ilmavirta loistaa.

Hyödyntää ilmavirtaa ja sen rikas ekosysteemi integraatiot, datainsinöörit ja tutkijat voivat koota minkä tahansa määrän erilaisia ​​työkaluja tai palveluita yhdeksi yhtenäiseksi putkistoksi, jota on helppo ylläpitää ja käyttää. Kun ymmärrämme nämä integrointimahdollisuudet, alamme nyt puhua siitä, miten Gretel voidaan integroida Airflow -putkistoon, jotta voidaan parantaa yhteisiä datatoimintojen työnkulkuja.

Miten Gretel sopii?

 
 
Gretelillä tehtävämme on tehdä tietojen käsittelystä helpompaa ja turvallisempaa. Asiakkaille puhuttaessa yksi kipupiste, josta usein kuulemme, on aika ja vaiva, jotka tarvitaan tietojen tutkijoiden pääsemiseksi arkaluonteisiin tietoihin. Käyttämällä Gretel Synteettinen, voimme vähentää arkaluonteisten tietojen käsittelyn riskiä luomalla synteettisen kopion tietojoukosta. Integroimalla Gretel Airflow -laitteeseen on mahdollista luoda itsepalveluputkia, joiden avulla tietotieteilijät voivat helposti saada tarvitsemansa tiedot nopeasti ilman, että tarvitsemme tietoinsinööriä jokaista uutta datapyyntöä varten.

Näyttääksemme nämä ominaisuudet, rakennamme ETL -putkilinjan, joka poimii käyttäjän toimintaominaisuudet tietokannasta, luo synteettisen version tietojoukosta ja tallentaa tietojoukon S3 -tiedostoon. Kun synteettinen aineisto on tallennettu S3: een, datatieteilijät voivat käyttää sitä myöhemmässä mallinnuksessa tai analysoinnissa vaarantamatta asiakkaiden yksityisyyttä.

Aloittaaksemme asiat otamme ensin lintuperspektiivin putkilinjasta. Jokainen tämän kaavion solmu edustaa putkilinjan vaihetta tai "tehtävää" ilmavirran kannalta.



Esimerkki Gretel -synteettiputki ilmavirralla.

 

Voimme jakaa putken kolmeen vaiheeseen, samankaltaiseen kuin mitä saatat löytää ETL -putkilinjasta:

  • Ote - Extract_features -tehtävä kysyy tietokannasta ja muuntaa tiedot ominaisuuksien joukkoksi, jota datatieteilijät voivat käyttää mallien rakentamiseen.
  • yhdistää --Gene_synthetic_features ottaa otetut ominaisuudet syötteeksi, kouluttaa synteettisen mallin ja luo sitten synteettisen joukon ominaisuuksia käyttämällä Gretel -sovellusliittymiä ja pilvipalveluja.
  • Ladata - upload_synthetic_features tallentaa synteettiset ominaisuudet S3: een, missä ne voidaan sisällyttää mihin tahansa loppupään malliin tai analyysiin.

Seuraavissa osioissa syvennymme kaikkiin kolmeen vaiheeseen yksityiskohtaisemmin. Jos haluat seurata jokaista koodinäytettä, voit siirtyä kohtaan gretelai/gretel-ilmavirtausputket ja lataa kaikki tässä blogikirjoituksessa käytetty koodi. Repo sisältää myös ohjeita, joita voit noudattaa käynnistäessäsi Airflow -ilmentymän ja ajaaksesi putkilinjan päästä päähän.

Lisäksi voi olla hyödyllistä tarkastella ilmavirtausputkea kokonaisuudessaan, ennen kuin leikkaamme jokaisen komponentin, dags/airbnb_user_bookings.py. Seuraavien osien koodinpätkät poimitaan linkitetystä käyttäjävarausputkesta.

Pura ominaisuudet

 
 
Ensimmäinen tehtävä, extract_features, on vastuussa raakadatan poimimisesta lähdetietokannasta ja sen muuttamisesta ominaisuuksiksi. Tämä on yleistä ominaisuuksien suunnittelu ongelma, jonka saatat löytää mistä tahansa koneoppimis- tai analytiikkaputkesta.

Esimerkkiputkessa tarjoamme PostgreSQL -tietokannan ja lataamme sen varaustiedoilla Airbnb Kaggle -kilpailu.

Tämä tietojoukko sisältää kaksi taulukkoa, käyttäjät ja istunnot. Istunnot sisältää vieraan avaimen viitteen user_id. Tämän suhteen avulla luomme joukon ominaisuuksia, jotka sisältävät erilaisia ​​varaustietoja käyttäjien mukaan. Seuraava kuva esittää ominaisuuksien luomiseen käytetyn SQL -kyselyn.

WITH session_features_by_user AS (SELECT user_id, count (*) AS number_of_actions_taken, count (DISTINCT action_type) AS number_of_unique_actions, round (keskim. (Sekuntia)) AS keskim. min_session_time_seconds, (SELECT count (*) FROM session s WHERE s.user_id = user_id AND s.action_type = 'booking_request') AS total_bookings FROM istunnot GROUP BY user_id) SELECT u.id AS user_id, u.gender, u.age, u .kieli, rekisteröintimenetelmä, u.date_account_created, s.number_of_actions_taken, s.numero_of_unique_actions, s.avg_session_time_seconds, s.min_session_time_seconds, s.max_session_time_seconds LUKU SUSER_FI


SQL -kysely suoritetaan sitten ilmavirtausputkistoltamme ja kirjoitetaan S3 -välipaikkaan käyttämällä seuraavaa tehtävämääritystä.

@task () def extract_features (sql_file: str) -> str: context = get_current_context () sql_query = Polku (sql_file) .read_text () key = f "{context ['dag_run']. run_id} _booking_features.csv" NamedTemporaryFilen kanssa (tila = "r+", jälkiliite = ". csv") muodossa tmp_csv: postgres.copy_expert (f "copy ({sql_query}) stdout csv -otsikolla", tmp_csv.name) s3.load_file (tiedostonimi = tmp_csv.name, avain = avain,) palautusavain


Tehtävän syöte sql_file määrittää, mikä kysely suoritetaan tietokannassa. Tämä kysely luetaan tehtävään ja suoritetaan sitten tietokantaa vastaan. Kyselyn tulokset kirjoitetaan sitten S3: een ja etätiedostoavain palautetaan tehtävän tulostena.

Alla olevassa kuvakaappauksessa on esimerkki ylhäältä otetun kyselyn tulosjoukosta. Seuraavassa osassa kuvataan synteettisen version luominen tästä tietojoukosta.



Kyselyn tuloksen esikatselu.

Syntetoi ominaisuudet käyttämällä Gretel -sovellusliittymiä

 
 
Jotta voimme luoda synteettisen version kustakin ominaisuudesta, meidän on ensin koulutettava synteettinen malli ja suoritettava sitten malli synteettisten tietueiden luomiseksi. Gretelillä on joukko Python SDK: ita, joiden avulla on helppo integroida Airflow -tehtäviin.

Python Client SDK: iden lisäksi olemme luoneet Gretel ilmavirtauskoukku joka hallinnoi Gretel API -yhteyksiä ja salaisuuksia. Kun olet määrittänyt Gretel Airflow Connection -yhteyden, yhdistäminen Gretel -sovellusliittymään on yhtä helppoa kuin

osoitteesta hooks.gretel import GretelHook gretel = GretelHook () project = gretel.get_project ()


Lisätietoja Airflow -yhteyksien määrittämisestä on Github -arkistossamme LUEMINUT.

Yllä olevan esimerkin projektimuuttujaa voidaan käyttää pääkohteena koulutukseen ja synteettisten mallien käyttämiseen Gretelin sovellusliittymän avulla. Jos haluat lisätietoja, voit tarkistaa meidän Python API -asiakirjat.

Viitaten takaisin varausputkeen, tarkastelemme nyt tehtävää create_synthetic_features. Tämä vaihe on vastuussa synteettisen mallin kouluttamisesta käyttämällä edellisen tehtävän ominaisuuksia.

@task () defgene_synthetic_features (data_source: str) -> str: project = gretel.get_project () model = project.create_model_obj (model_config = "syntetics/default", data_source = s3.download_file (data_source)) model.submit_cloud () kysely (malli) return model.get_artifact_link ("data_esikatselu")


Tarkastelemalla menetelmän allekirjoitusta näet, että se kulkee polun, data_source. Tämä arvo viittaa edellisessä vaiheessa poimittuihin S3 -ominaisuuksiin. Seuraavassa osassa käymme läpi, miten kaikki nämä tulot ja lähdöt on kytketty yhteen.

Kun luot mallia project.create_model_obj -ohjelmalla, parametrin model_config parametri edustaa mallin luomiseen käytettyä synteettistä mallikonfiguraatiota. Tässä putkessa käytämme omaamme oletusmallin kokoonpano, mutta monia muita asetukset ovat käytettävissä.

Kun malli on määritetty, kutsumme model.submit_cloud (). Tämä lähettää mallin koulutukseen ja ennätysten luomiseen Gretel Cloudin avulla. Kyselyn (malli) kutsuminen estää tehtävän, kunnes malli on suorittanut koulutuksen.

Nyt kun malli on koulutettu, palautamme linkin ladattavien synteettisten ominaisuuksien lataamiseen käyttämällä get_artifact_link -linkkiä.



Tietojen esikatselu synteettisistä ominaisuuksista.

 

Tätä artefaktilinkkiä käytetään syötteenä viimeiseen upload_synthetic_features -vaiheeseen.

Lataa synteettisiä ominaisuuksia

 
 
Alkuperäiset ominaisuudet on purettu ja synteettinen versio on luotu. Nyt on aika ladata synteettiset ominaisuudet, jotta jatkokuluttajat voivat käyttää niitä. Tässä esimerkissä aiomme käyttää S3 -kauhaa tietojoukon lopullisena kohteena.

@task () def upload_synthetic_features (data_set: str): context = get_current_context () with open (data_set, "rb") as synth_features: s3.load_file_obj (file_obj = synth_features, key = f "{..._ booking_features_synthetic.csv", )


Tämä tehtävä on melko yksinkertainen. Data_set -syöttöarvo sisältää allekirjoitetun HTTP -linkin synteettisen tietojoukon lataamiseen Gretelin sovellusliittymästä. Tehtävä lukee kyseisen tiedoston Airflow -työntekijään ja lähettää sitten jo määritetyn S3 -koukun avulla synteettisen ominaisuuden tiedoston S3 -ämpäriin, jossa loppukäyttäjät tai mallit voivat käyttää sitä.

Putkilinjan orkestrointi

 
 
Kolmen viimeisen jakson aikana olemme käyneet läpi kaikki tarvittavat koodit, joita tarvitaan tietojoukon poimimiseen, syntetisointiin ja lataamiseen. Viimeinen vaihe on yhdistää kaikki nämä tehtävät yhteen yhdeksi ilmavirtausputkiksi.

Jos muistat tämän viestin alun, mainitsimme lyhyesti DAG -käsitteen. Airflowin TaskFlow -sovellusliittymän avulla voimme koota nämä kolme Python -menetelmää DAG: ksi, joka määrittää tulot, lähdöt ja järjestyksen jokaisen vaiheen suorittamiseksi.

feature_path = extract_features ("/opt/airflow/dags/sql/session_rollups__by_user.sql") syntetiset_datat = generoi_synteettiset_ominaisuudet (ominaisuuspolku) upload_synthetic_features (synteettiset tiedot)


Jos seuraat näiden menetelmäkutsujen polkua, saat lopulta kaavion, joka näyttää alkuperäiseltä ominaisuusputkillamme.



Gretel -synteettinen putki Airflow: ssa.

 

Jos haluat käyttää tätä putkilinjaa ja nähdä sen toiminnassa, siirry kohtaan Github -arkiston mukana. Sieltä löydät ohjeet Airflow -ilmentymän käynnistämiseen ja putkilinjan suorittamiseen päästä päähän.

Kääritään asioita

 
 
Jos olet päässyt tähän asti, olet nähnyt kuinka Gretel voidaan integroida Airflow -pohjaiseen dataputkeen. Yhdistämällä Gretelin kehittäjäystävälliset sovellusliittymät ja Airflow'n tehokas koukku- ja käyttöjärjestelmä, on helppo rakentaa ETL -putkistoja, jotka tekevät datasta helpommin saatavilla ja turvallisemman käyttää.

Puhuimme myös yhteisestä ominaisuuksien suunnittelusta, jossa arkaluonteisia tietoja ei ehkä ole helposti saatavilla. Luomalla tietojoukon synteettisen version pienennämme arkaluonteisten tietojen paljastamisen riskiä, ​​mutta säilytämme kuitenkin tietojoukon hyödyllisyyden ja asetamme sen nopeasti niiden tarpeeseen.

Kun tarkastellaan ominaisuusputkea abstraktimmin, meillä on nyt malli, joka voidaan käyttää uudelleen mihin tahansa määrään uusia SQL -kyselyitä. Ottamalla käyttöön uuden version putkilinjasta ja vaihtamalla alkuperäisen SQL -kyselyn, voimme näyttää mahdolliset arkaluonteiset kyselyt synteettisellä tietojoukolla, joka säilyttää asiakkaiden yksityisyyden. Ainoa koodirivi, joka on muutettava, on sql -tiedoston polku. Ei vaadi monimutkaista tietotekniikkaa.

Kiitos lukemisesta

 
 
Lähetä meille sähköpostia osoitteessa hei@gretel.ai tai tule mukaan New Rose Hotel jos sinulla on kysymyksiä tai kommentteja. Haluaisimme kuulla, miten käytät Airflowa ja miten voimme parhaiten integroitua olemassa oleviin dataputkiisi.

 
Bio: Drew Newberry on ohjelmistosuunnittelija osoitteessa Gretel.ai.

Alkuperäinen. Postitettu luvalla.

Related:

Lähde: https://www.kdnuggets.com/2021/09/build-synthetic-data-pipeline-gretel-apache-airflow.html

Aikaleima:

Lisää aiheesta KDnuggets