CI/CD-technikák Git- és Databricks Git-mappákkal (Adattárak)
Ismerje meg a Databricks Git-mappák CI/CD-munkafolyamatokban való használatának technikáit. A Databricks Git-mappák munkaterületen való konfigurálásával forrásvezérlőt használhat a Git-adattárakban lévő projektfájlokhoz, és integrálhatja őket az adatmérnöki folyamatokba.
Az alábbi ábrán a technikák és a munkafolyamatok áttekintése látható.
A CI/CD és az Azure Databricks áttekintése: Mi a CI/CD az Azure Databricksben?
Fejlesztési folyamat
A Databricks Git-mappák felhasználói szintű mappákkal rendelkeznek. A rendszer automatikusan létrehozza a felhasználói szintű mappákat, amikor a felhasználók először klónoznak egy távoli adattárat. A felhasználói mappákBan lévő Databricks Git-mappákat "helyi kivételnek" tekintheti, amelyek minden felhasználó számára egyediek, és ahol a felhasználók módosítják a kódjukat.
A Databricks Git-mappák felhasználói mappájában klónozza a távoli adattárat. Az ajánlott eljárás egy új szolgáltatáság létrehozása vagy egy korábban létrehozott ág kiválasztása a munka számára ahelyett, hogy közvetlenül véglegesítenének és elküldenének módosításokat a főágba. Az ágban módosításokat végezhet, véglegesíthet és leküldhet. Ha készen áll a kód egyesítésére, ezt a Git-mappák felhasználói felületén teheti meg.
Követelmények
Ehhez a munkafolyamathoz már be kell állítania a Git-integrációt.
Feljegyzés
A Databricks azt javasolja, hogy minden fejlesztő a saját szolgáltatáságán működjön. Az egyesítési ütközések feloldásáról további információt az egyesítési ütközések feloldása című témakörben talál.
Együttműködés a Git-mappákban
Az alábbi munkafolyamat a fő ágon alapuló ágat feature-b
használja.
- Klónozza a meglévő Git-adattárat a Databricks-munkaterületre.
- A Git-mappák felhasználói felületén hozzon létre egy szolgáltatáságat a főágból. Ez a példa egyetlen funkcióágat
feature-b
használ az egyszerűség kedvéért. Több funkcióágat is létrehozhat és használhat a munkájához. - Módosítsa az Azure Databricks-jegyzetfüzeteket és más fájlokat az adattárban.
- Véglegesítse és küldje el a módosításokat a Git-szolgáltatónak.
- A közreműködők mostantól klónozhatják a Git-adattárat a saját felhasználói mappájukba.
- Egy új ágon dolgozva egy munkatárs módosítja a jegyzetfüzeteket és a Git mappában lévő egyéb fájlokat.
- A közreműködő véglegesíti és leküldi a módosításokat a Git-szolgáltatónak.
- Ha más ágak módosításait szeretné egyesíteni, vagy a Databricksben szeretné újrabázisba adni a feature-b ágat, a Git-mappák felhasználói felületén használja az alábbi munkafolyamatok egyikét:
- Ágak egyesítése. Ha nincs ütközés, a rendszer leküldi az egyesítést a távoli Git-adattárba a használatával
git push
. - Újrabázis egy másik ágon.
- Ágak egyesítése. Ha nincs ütközés, a rendszer leküldi az egyesítést a távoli Git-adattárba a használatával
- Ha készen áll arra, hogy a munkát a távoli Git-adattárba és
main
ágba egyesítse, a Git-mappák felhasználói felületével egyesítheti a b funkció módosításait. Ha szeretné, a módosításokat közvetlenül a Git-tárházba egyesítheti a Git-mappa háttérrendszerében.
Éles feladat munkafolyamata
A Databricks Git-mappák két lehetőséget biztosítanak az éles feladatok futtatására:
- 1. lehetőség: Adjon meg egy távoli Git-hivatkozást a feladatdefinícióban. Futtasson például egy adott jegyzetfüzetet egy
main
Git-adattár ágában. - 2. lehetőség: Állítson be egy éles Git-adattárat, és hívja meg a Repos API-kat a programozott frissítéshez. Futtassa a feladatokat a távoli adattárat klónozó Databricks Git-mappán. A Feladat első feladatának a Repos API-hívásnak kell lennie.
1. lehetőség: Feladatok futtatása távoli adattárban lévő jegyzetfüzetek használatával
Egyszerűsítheti a feladatdefiníciós folyamatot, és egyetlen igazságforrást tarthat meg egy Azure Databricks-feladat futtatásával egy távoli Git-adattárban található jegyzetfüzetek használatával. Ez a Git-referencia lehet Egy Git-véglegesítés, címke vagy ág, amelyet Ön a feladatdefinícióban biztosít.
Ez segít megelőzni az éles feladat véletlen módosításait, például ha egy felhasználó helyi módosításokat végez egy éles adattárban, vagy ágakat vált. Emellett automatizálja a CD-lépést is, mivel nem kell külön éles Git-mappát létrehoznia a Databricksben, kezelnie kell az engedélyeket, és frissítenie kell.
Lásd: A Git használata feladatokkal.
2. lehetőség: Éles Git-mappa és Git automation beállítása
Ebben a beállításban beállít egy éles Git-mappát és egy automatizálást a Git-mappa frissítéséhez az egyesítés során.
1. lépés: Felső szintű mappák beállítása
A rendszergazda nem felhasználó legfelső szintű mappákat hoz létre. Ezeknek a legfelső szintű mappáknak a leggyakoribb használati esete, ha olyan fejlesztési, előkészítési és éles mappákat hoz létre, amelyek Databricks Git-mappákat tartalmaznak a fejlesztéshez, előkészítéshez és éles környezethez megfelelő verziókhoz vagy ágakhoz. Ha például a vállalat az main
éles ágat használja, a "production" Git mappában ki kell venni az main
ágat.
Ezekre a legfelső szintű mappákra vonatkozó engedélyek általában csak olvashatók a munkaterületen belüli összes nem rendszergazdai felhasználó számára. Az ilyen legfelső szintű mappák esetében azt javasoljuk, hogy csak a szolgáltatásnév(ek)et adja meg a CAN EDIT és a CAN MANAGE engedélyekkel, hogy elkerülje az éles kód munkaterület-felhasználók általi véletlen szerkesztését.
2. lépés: A Databricks Git-mappák automatikus frissítéseinek beállítása a Git-mappák API-val
Ha a Git-mappát a Databricksben a legújabb verzióban szeretné tartani, beállíthatja a Git Automationt a Repos API meghívására. A Git-szolgáltatóban állítsa be az automatizálást, amely a lekéréses kérelem fő ágba való sikeres egyesítését követően meghívja a megfelelő Git-mappában található Repos API-végpontot, hogy frissítse azt a legújabb verzióra.
A GitHubon például ez a GitHub Actions használatával érhető el. További információkért lásd a Repos API-t.
Ha bármilyen Databricks REST API-t egy Databricks-jegyzetfüzetcellából szeretne meghívni, először telepítse a Databricks SDK-t %pip install databricks-sdk --upgrade
(a legújabb Databricks REST API-khoz), majd importálja ApiClient
onnan databricks.sdk.core
.
Feljegyzés
Ha %pip install databricks-sdk --upgrade
"A csomag nem található" hibaüzenetet ad vissza, akkor a databricks-sdk
csomag korábban nem lett telepítve. Futtassa újra a parancsot a --upgrade
következő jelölő nélkül: %pip install databricks-sdk
.
A Databricks SDK API-kat egy jegyzetfüzetből is futtathatja a munkaterület szolgáltatásneveinek lekéréséhez. Íme egy példa a Python és a PythonHoz készült Databricks SDK használatával.
Olyan eszközöket is használhat, mint a curl
Terraform. Az Azure Databricks felhasználói felülete nem használható.
Az Azure Databricks szolgáltatásneveiről további információt a Szolgáltatásnevek kezelése című témakörben talál. A szolgáltatásnevekről és a CI/CD-ről további információt a CI/CD szolgáltatásnevek című témakörben talál. A Databricks SDK jegyzetfüzetből való használatával kapcsolatos további információkért olvassa el a Databricks SDK for Python használatát egy Databricks-jegyzetfüzetből.
Szolgáltatásnév használata Databricks Git-mappákkal
A fent említett munkafolyamatok szolgáltatásnévvel való futtatásához:
- Szolgáltatásnév létrehozása az Azure Databricks használatával.
- Adja hozzá a git hitelesítő adatait: Használja a Git-szolgáltató PAT-ját a szolgáltatásnévhez.
Szolgáltatásnevek beállítása, majd Git-szolgáltatói hitelesítő adatok hozzáadása:
- Hozzon létre egy szolgáltatásnevet. Lásd: Feladatok futtatása szolgáltatásnévvel.
- Hozzon létre egy Microsoft Entra ID-jogkivonatot egy szolgáltatásnévhez.
- A szolgáltatásnév létrehozása után hozzáadja azt az Azure Databricks-munkaterülethez a Service Principals API-val.
- Adja hozzá a Git-szolgáltató hitelesítő adatait a munkaterülethez a Microsoft Entra-azonosító jogkivonatával és a Git Credentials API-val.
Terraform-integráció
A Databricks Git-mappákat egy teljesen automatizált beállításban is kezelheti a Terraform és a databricks_repo használatával:
resource "databricks_repo" "this" {
url = "https://github.com/user/demo.git"
}
Ha a Terraform használatával szeretne Git-hitelesítő adatokat hozzáadni egy szolgáltatásnévhez, adja hozzá a következő konfigurációt:
provider "databricks" {
# Configuration options
}
provider "databricks" {
alias = "sp"
host = "https://....cloud.databricks.com"
token = databricks_obo_token.this.token_value
}
resource "databricks_service_principal" "sp" {
display_name = "service_principal_name_here"
}
resource "databricks_obo_token" "this" {
application_id = databricks_service_principal.sp.application_id
comment = "PAT on behalf of ${databricks_service_principal.sp.display_name}"
lifetime_seconds = 3600
}
resource "databricks_git_credential" "sp" {
provider = databricks.sp
depends_on = [databricks_obo_token.this]
git_username = "myuser"
git_provider = "azureDevOpsServices"
personal_access_token = "sometoken"
}
Automatizált CI/CD-folyamat konfigurálása Databricks Git-mappákkal
Íme egy egyszerű automatizálás, amely GitHub-műveletként futtatható.
Követelmények
- Létrehozott egy Git-mappát egy Databricks-munkaterületen, amely nyomon követi az egyesített alapágat.
- Van egy Python-csomagja, amely létrehozza az összetevőket egy DBFS-helyre való elhelyezéshez. A kódnak a következőnek kell lennie:
- Frissítse az előnyben részesített ághoz (például
development
) társított adattárat a jegyzetfüzetek legújabb verzióinak tárolására. - Hozza létre az összetevőket, és másolja őket a tár elérési útjára.
- Cserélje le a buildösszetevők utolsó verzióit, hogy ne kelljen manuálisan frissítenie az összetevőverziókat a feladatban.
- Frissítse az előnyben részesített ághoz (például
Lépések
Feljegyzés
Az 1. lépést a Git-adattár rendszergazdájának kell elvégeznie.
Állítson be titkos kulcsokat, hogy a kód hozzáférhessen a Databricks-munkaterülethez. Adja hozzá a következő titkos kódokat a GitHub-adattárhoz:
- DEPLOYMENT_TARGET_URL: Állítsa be a munkaterület URL-címére, de ne tartalmazza az
/?o
alsztringet. - DEPLOYMENT_TARGET_TOKEN: Adjon meg egy Databricks személyes hozzáférési jogkivonatot (PAT). A Databricks PAT-t a Git hitelesítő adatainak konfigurálásával és távoli adattár Azure Databrickshez való csatlakoztatásával hozhatja létre.
- DEPLOYMENT_TARGET_URL: Állítsa be a munkaterület URL-címére, de ne tartalmazza az
Lépjen a Git-adattár Műveletek lapjára, és kattintson az Új munkafolyamat gombra. A lap tetején válassza a Munkafolyamat beállítása lehetőséget , és illessze be ezt a szkriptet:
# This is a basic automation workflow to help you get started with GitHub Actions. name: CI # Controls when the workflow will run on: # Triggers the workflow on push for main and dev branch push: branches: # Set your base branch name here - your-base-branch-name # A workflow run is made up of one or more jobs that can run sequentially or in parallel jobs: # This workflow contains a single job called "deploy" deploy: # The type of runner that the job will run on runs-on: ubuntu-latest env: DBFS_LIB_PATH: dbfs:/path/to/libraries/ REPO_PATH: /Repos/path/here LATEST_WHEEL_NAME: latest_wheel_name.whl # Steps represent a sequence of tasks that will be executed as part of the job steps: # Checks-out your repository under $GITHUB_WORKSPACE, so your job can access it - uses: actions/checkout@v2 - name: Setup Python uses: actions/setup-python@v2 with: # Version range or exact version of a Python version to use, using SemVer's version range syntax. python-version: 3.8 - name: Install mods run: | pip install databricks-cli pip install pytest setuptools wheel - name: Configure CLI run: | echo "${{ secrets.DEPLOYMENT_TARGET_URL }} ${{ secrets.DEPLOYMENT_TARGET_TOKEN }}" | databricks configure --token - name: Extract branch name shell: bash run: echo "##[set-output name=branch;]$(echo ${GITHUB_REF#refs/heads/})" id: extract_branch - name: Update Databricks Git folder run: | databricks repos update --path ${{env.REPO_PATH}} --branch "${{ steps.extract_branch.outputs.branch }}" - name: Build Wheel and send to Databricks workspace DBFS location run: | cd $GITHUB_WORKSPACE python setup.py bdist_wheel dbfs cp --overwrite ./dist/* ${{env.DBFS_LIB_PATH}} # there is only one wheel file; this line copies it with the original version number in file name and overwrites if that version of wheel exists; it does not affect the other files in the path dbfs cp --overwrite ./dist/* ${{env.DBFS_LIB_PATH}}${{env.LATEST_WHEEL_NAME}} # this line copies the wheel file and overwrites the latest version with it
Frissítse a következő környezeti változóértékeket a sajátjával:
- DBFS_LIB_PATH: A DBFS-ben az ebben az automatizálásban használt kódtárakhoz (kerekekhez) vezető útvonal, amely a következővel
dbfs:
kezdődik: . Például:dbfs:/mnt/myproject/libraries
- REPO_PATH: A Databricks-munkaterület elérési útja ahhoz a Git-mappához, ahol a jegyzetfüzetek frissülnek. Például:
/Repos/Develop
. - LATEST_WHEEL_NAME: Az utoljára lefordított Python-kerékfájl neve (
.whl
). Ezzel elkerülheti, hogy a Databricks-feladatok kerékverziói manuálisan frissüljenek. Például:your_wheel-latest-py3-none-any.whl
.
- DBFS_LIB_PATH: A DBFS-ben az ebben az automatizálásban használt kódtárakhoz (kerekekhez) vezető útvonal, amely a következővel
Válassza a Módosítások véglegesítése... lehetőséget a szkript GitHub Actions-munkafolyamatként való véglegesítéséhez. A munkafolyamat lekéréses kérésének egyesítése után lépjen a Git-adattár Műveletek lapjára, és győződjön meg arról, hogy a műveletek sikeresek.