Dbt-transzformációk használata Azure Databricks-feladatban
A dbt Core projekteket egy Azure Databricks feladatban feladatként futtathatja. A dbt Core-projekt feladatfeladatként való futtatásával a következő Azure Databricks-feladatok funkcióit használhatja:
- Automatizálhatja a dbt-feladatokat, és ütemezheti a dbt-tevékenységeket tartalmazó munkafolyamatokat.
- Monitorozza a dbt-átalakításokat, és küldjön értesítéseket az átalakítások állapotáról.
- A dbt-projekt belefoglalása munkafolyamatba más feladatokkal. A munkafolyamat például betöltheti az adatokat az Automatikus betöltővel, átalakíthatja az adatokat a dbt használatával, és egy jegyzetfüzet-feladattal elemezheti az adatokat.
- Az összetevők automatikus archiválása feladatfuttatásokból, beleértve a naplókat, az eredményeket, a jegyzékeket és a konfigurációt.
A dbt Core-ról további információt a dbt dokumentációjában talál.
Fejlesztési és éles munkafolyamat
A Databricks azt javasolja, hogy a dbt-projekteket egy Databricks SQL Warehouse-ra fejlesztse. A Databricks SQL warehouse használatával tesztelheti a dbt által generált SQL-t, és a dbt által generált lekérdezések hibakeresésére használhatja az SQL warehouse lekérdezési előzményeket.
A dbt-átalakítások éles környezetben való futtatásához a Databricks azt javasolja, hogy használja a dbt-feladatot egy Databricks-feladatban. Alapértelmezés szerint a dbt-feladat az Azure Databricks compute és a dbt által létrehozott SQL használatával futtatja a dbt Python-folyamatot a kiválasztott SQL-raktáron.
Adatbázis-átalakításokat futtathat kiszolgáló nélküli SQL-raktáron, pro SQL Warehouse-on, Azure Databricks-számításon vagy bármely más , dbt által támogatott raktáron. Ez a cikk az első két lehetőséget ismerteti példákkal.
Ha a munkaterület unitykatalógus-kompatibilis, és a kiszolgáló nélküli feladatok engedélyezve van, a feladat alapértelmezés szerint kiszolgáló nélküli számításon fut.
Feljegyzés
A dbt-modellek SQL-raktáron való fejlesztése és éles környezetben való futtatása az Azure Databricks-számításban a teljesítmény és az SQL nyelvi támogatásának apró eltéréseihez vezethet. A Databricks ugyanazt a Databricks Runtime-verziót javasolja a számításhoz és az SQL Warehouse-hoz.
Követelmények
Ha tudni szeretné, hogyan hozhat létre és futtathat dbt-projekteket a fejlesztési környezetben a dbt Core és a
dbt-databricks
csomag használatával, olvassa el a Csatlakozás a dbt Core-hoz című témakört.A Databricks a dbt-databricks csomagot javasolja, nem a dbt-spark csomagot. A dbt-databricks csomag a dbt-spark egy Databricksre optimalizált elágazása.
Ha adatbázisprojekteket szeretne használni egy Azure Databricks-feladatban, be kell állítania a Git-integrációt a Databricks Git-mappákhoz. Dbt-projektet nem futtathat a DBFS-ből.
Engedélyezve kell lennie a kiszolgáló nélküli vagy a pro SQL-tárolóknak .
Az első dbt-feladat létrehozása és futtatása
Az alábbi példa a jaffle_shop projektet használja, amely egy példaprojekt, amely a dbt alapfogalmait mutatja be. A jaffle shop projektet futtató feladat létrehozásához hajtsa végre az alábbi lépéseket.
Nyissa meg az Azure Databricks kezdőlapját, és tegye az alábbiak egyikét:
- Kattintson a Munkafolyamatok elemre az oldalsávon, és kattintson a gombra .
- Az oldalsávon kattintson az Új gombra, és válassza a Feladat lehetőséget.
A Feladatok lap Tevékenység szövegmezőjében cserélje le a Feladat neve hozzáadása... elemet a feladat nevére.
A Tevékenység név mezőbe írja be a tevékenység nevét.
A Típus mezőben válassza ki a dbt tevékenységtípust .
A Forrás legördülő menüben kiválaszthatja a Munkaterület lehetőséget, ha egy Azure Databricks-munkaterület mappájában vagy Git-szolgáltatóban található dbt-projektet szeretne használni egy távoli Git-adattárban található projekthez. Mivel ez a példa a Git-adattárban található jaffle shop projektet használja, válassza a Git-szolgáltatót, kattintson a Szerkesztés gombra, és adja meg a GitHub-adattár részleteit.
- A Git-adattár URL-címében adja meg a jaffle shop projekt URL-címét.
- A Git-referencia (ág/ címke/ véglegesítés) mezőbe írja be a következőt
main
: Címkét vagy SHA-t is használhat.
Kattintson a Megerősítés gombra.
A dbt-parancsok szövegmezőiben adja meg a futtatandó dbt-parancsokat (deps, seed és run). Minden parancsnak előtaggal kell rendelkeznie
dbt
. A parancsok a megadott sorrendben futnak.Az SQL Warehouse-ban válasszon ki egy SQL-raktárt a dbt által létrehozott SQL futtatásához. Az SQL Warehouse legördülő menüben csak kiszolgáló nélküli és profi SQL-raktárak láthatók.
(Nem kötelező) Megadhatja a feladat kimenetéhez tartozó sémát. Alapértelmezés szerint a rendszer a sémát
default
használja.(Nem kötelező) Ha módosítani szeretné a dbt Core-t futtató számítási konfigurációt, kattintson a DBT CLI-számítás elemre.
(Nem kötelező) A feladathoz megadhat egy dbt-databricks-verziót. Ha például a dbt-feladatot egy adott fejlesztési és éles verzióra szeretné rögzíteni:
- A Függő kódtárak csoportban kattintson a dbt-databricks aktuális verziója mellett.
- Kattintson a Hozzáadás gombra.
- A Függő kódtár hozzáadása párbeszédpanelen válassza a PyPI lehetőséget, és írja be a dbt-package verziót a Csomag szövegmezőbe (például
dbt-databricks==1.6.0
). - Kattintson a Hozzáadás gombra.
Feljegyzés
A Databricks azt javasolja, hogy rögzítse a dbt-feladatokat a dbt-databricks csomag egy adott verziójára, hogy a fejlesztéshez és az éles futtatáshoz ugyanazt a verziót használhassa. A Databricks a dbt-databricks csomag 1.6.0-s vagy újabb verzióját javasolja.
Kattintson a Létrehozás gombra.
A feladat futtatásához kattintson a gombra .
A dbt-feladat eredményeinek megtekintése
Ha a feladat befejeződött, tesztelheti az eredményeket úgy, hogy SQL-lekérdezéseket futtat egy jegyzetfüzetből, vagy lekérdezéseket futtat a Databricks-raktárban. Lásd például a következő minta lekérdezéseket:
SHOW tables IN <schema>;
SELECT * from <schema>.customers LIMIT 10;
Cserélje le <schema>
a feladatkonfigurációban konfigurált sémanévre.
API-példa
A Jobs API-val adatbázisfeladatokat tartalmazó feladatokat is létrehozhat és kezelhet. Az alábbi példa egy feladatot hoz létre egyetlen dbt-tevékenységgel:
{
"name": "jaffle_shop dbt job",
"max_concurrent_runs": 1,
"git_source": {
"git_url": "https://github.com/dbt-labs/jaffle_shop",
"git_provider": "gitHub",
"git_branch": "main"
},
"job_clusters": [
{
"job_cluster_key": "dbt_CLI",
"new_cluster": {
"spark_version": "10.4.x-photon-scala2.12",
"node_type_id": "Standard_DS3_v2",
"num_workers": 0,
"spark_conf": {
"spark.master": "local[*, 4]",
"spark.databricks.cluster.profile": "singleNode"
},
"custom_tags": {
"ResourceClass": "SingleNode"
}
}
}
],
"tasks": [
{
"task_key": "transform",
"job_cluster_key": "dbt_CLI",
"dbt_task": {
"commands": [
"dbt deps",
"dbt seed",
"dbt run"
],
"warehouse_id": "1a234b567c8de912"
},
"libraries": [
{
"pypi": {
"package": "dbt-databricks>=1.0.0,<2.0.0"
}
}
]
}
]
}
(Speciális) Adatbázis futtatása egyéni profillal
Ha a dbt-feladatot SQL-raktárral (ajánlott) vagy teljes célú számítással szeretné futtatni, használjon egy egyéni profiles.yml
definíciót a raktár vagy az Azure Databricks számításhoz a csatlakozáshoz. Ha olyan feladatot szeretne létrehozni, amely a jaffle shop projektet egy raktárral vagy egy teljes célú számítással futtatja, hajtsa végre az alábbi lépéseket.
Feljegyzés
A dbt-feladatok célként csak SQL-raktár vagy teljes célú számítás használható. A feladatszámítás nem használható célként a dbt-hez.
Hozzon létre egy elágazást a jaffle_shop adattárból.
Klónozza az elágazott adattárat az asztalra. Futtathat például a következőhöz hasonló parancsot:
git clone https://github.com/<username>/jaffle_shop.git
Cserélje le
<username>
a GitHub-leírót.Hozzon létre egy új, a
jaffle_shop
könyvtárban hívottprofiles.yml
fájlt a következő tartalommal:jaffle_shop: target: databricks_job outputs: databricks_job: type: databricks method: http schema: "<schema>" host: "<http-host>" http_path: "<http-path>" token: "{{ env_var('DBT_ACCESS_TOKEN') }}"
- Cserélje le
<schema>
a projekttáblák sémanevére. - Ha SQL-raktárral szeretné futtatni a dbt-feladatot, cserélje le
<http-host>
a Kiszolgáló állomásnév értékét az SQL Warehouse Kapcsolat részletei lapján. Ha teljes célú számítással szeretné futtatni a dbt-feladatot, cserélje le<http-host>
az Azure Databricks-számítás JDBC/ODBC lapján található Kiszolgáló állomásnév értékére. - Ha SQL-raktárral szeretné futtatni a dbt-feladatot, cserélje le
<http-path>
az SQL Warehouse Kapcsolat részletei lapján található HTTP-elérési út értékre. Ha teljes célú számítással szeretné futtatni a dbt-feladatot, cserélje le<http-path>
az Azure Databricks-számítás JDBC/ODBC lapján található HTTP Path értékre.
Nem ad meg titkos kulcsokat, például hozzáférési jogkivonatokat a fájlban, mert a fájlt a forrásvezérlőbe fogja ellenőrizni. Ehelyett ez a fájl a dbt templating funkcióval dinamikusan szúr be hitelesítő adatokat futásidőben.
Feljegyzés
A létrehozott hitelesítő adatok a futtatás időtartamára érvényesek, legfeljebb 30 napig, és a befejezés után automatikusan vissza lesz vonva.
- Cserélje le
Ellenőrizze ezt a fájlt a Gitben, és küldje el az elágaztatott adattárba. Futtathat például a következőhöz hasonló parancsokat:
git add profiles.yml git commit -m "adding profiles.yml for my Databricks job" git push
Kattintson a Databricks felhasználói felület oldalsávjának Munkafolyamatok elemére.
Válassza ki a dbt-feladatot, és kattintson a Feladatok fülre.
A Forrás területen kattintson a Szerkesztés gombra, és adja meg az elágaztatott jaffle shop GitHub-adattár részleteit.
Az SQL Warehouse-ban válassza a Nincs (Manuális) lehetőséget.
A Profilok könyvtárban adja meg a fájlt tartalmazó
profiles.yml
könyvtár relatív elérési útját. Hagyja üresen az elérési út értékét az adattárgyökér alapértelmezett értékének használatához.
(Speciális) Dbt Python-modellek használata munkafolyamatban
Feljegyzés
a Python modellek dbt támogatása béta verzióban van, és a dbt 1.3 vagy nagyobb verziószámot igényel.
A dbt mostantól támogatja a Python-modelleket adott adattárházakban, beleértve a Databrickset is. A Dbt Python-modellekkel a Python-ökoszisztémából származó eszközökkel olyan átalakításokat valósíthat meg, amelyeket nehéz megvalósítani az SQL-lel. Létrehozhat egy Azure Databricks-feladatot, hogy egyetlen feladatot futtasson a dbt Python-modellel, vagy a dbt-feladatot egy több feladatot tartalmazó munkafolyamat részeként is felveheti.
Nem futtathat Python-modelleket egy DBT-feladatban SQL Warehouse használatával. A dbt Python-modellek Azure Databricks-beli használatáról további információt a dbt dokumentációjában található konkrét adattárházakban talál.
Hibák és hibaelhárítás
A profilfájl nem létezik hiba
Hibaüzenet:
dbt looked for a profiles.yml file in /tmp/.../profiles.yml but did not find one.
Lehetséges okok:
A profiles.yml
fájl nem található a megadott $PATH. Győződjön meg róla, hogy a dbt projekt gyökere tartalmazza a profiles.yml fájlt.