Megosztás a következőn keresztül:


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 Git-mappák CI/CD-technikáinak áttekintése.

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 példányoknak" 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. Ajánlott eljárás, hogy a módosítások közvetlen véglegesítése és a főágba való közvetlen leküldése helyett hozzon létre egy új funkcióágat, vagy válasszon ki egy korábban létrehozott ágat a munkájához. 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 kell beállítania a Git-integrációs.

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.

  1. Klónozza a meglévő Git-adattárat a Databricks-munkaterületre.
  2. 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.
  3. Módosítsa az Azure Databricks-jegyzetfüzeteket és más fájlokat az adattárban.
  4. Véglegesítse és küldje el a módosításokat a Git-szolgáltatónak.
  5. A közreműködők mostantól klónozhatják a Git-adattárat a saját felhasználói mappájukba.
    1. Egy új ágon dolgozva egy munkatárs módosítja a jegyzetfüzeteket és a Git mappában lévő egyéb fájlokat.
    2. A közreműködő véglegesíti és leküldi a módosításokat a Git-szolgáltatónak.
  6. 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:
  7. 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, hogy programozott módon frissítse. 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 környezetbeli Git-mappát, valamint az egyesítéskor a Git-mappa frissítésére szolgáló automatizálást.

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.

Legfelső szintű Git-mappák.

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 APImeghívásához. Git szolgáltatójában állítson be olyan automatizálást, amely minden PR fő ágba való sikeres egyesítése után 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.

Szolgáltatási objektum használata automatizáláshoz a Databricks Git-mappákkal

Az Azure Databricks-fiókkonzol vagy a Databricks parancssori felület használatával létrehozhat egy szolgáltatásnevet, amely jogosult a munkaterület Git-mappáinak elérésére.

Új szolgáltatásnév létrehozásához lásd Szolgáltatásnevek kezelésecímű témakört. Ha szolgáltatásnévvel rendelkezik a munkaterületen, csatolhatja hozzá a Git-hitelesítő adatait, hogy az az automatizálás részeként hozzáférhessen a munkaterület Git-mappáihoz.

Szolgáltatásprincípálé engedélyezése a Git-mappák eléréséhez

Ha az Azure Databricks-fiókkonzol használatával jogosult hozzáférést szeretne biztosítani a Git-mappákhoz egy szolgáltatásnévhez:

  1. Jelentkezzen be az Azure Databricks-munkaterületre. A lépések elvégzéséhez rendszergazdai jogosultságokkal kell rendelkeznie a munkaterületen. Ha nem rendelkezik rendszergazdai jogosultságokkal a munkaterülethez, kérje vagy forduljon a fiókadminisztrátorhoz.

  2. A lap jobb felső sarkában kattintson a felhasználónévre, majd válassza a Beállításoklehetőséget.

  3. A bal oldali navigációs panelen válassza a Identitás és hozzáférés elemet a Munkaterület-rendszergazda alatt, majd válassza a Kezelés gombot a Szolgáltatásfelelősökszámára.

    A szolgáltatásprincipál lap a munkaterület beállításainak keretében

  4. A szolgáltatásnevek listájában válassza ki azt, amelyet Git-hitelesítő adatokkal szeretne frissíteni. Új szolgáltatásnevet is létrehozhat a Szolgáltatásnév hozzáadásalehetőséget választva.

    Szolgáltatás elvének létrehozása vagy hozzáadása a Databricks-fiókkonzolon keresztül

  5. Válassza a Git-integráció fület. (Ha nem hozta létre a szolgáltatási főszereplőt, vagy nem kapta meg rajta a szolgáltatási főszereplő-kezelő jogosultságot, az szürkén fog megjelenni.) Alatta válassza ki a hitelesítő adatokhoz tartozó Git-szolgáltatót (például GitHub), válassza az Git-fiók összekapcsolásalehetőséget, majd válassza az Összekapcsoláslehetőséget.

    Személyes Git-hozzáférési jogkivonatot (PAT) is használhat, ha nem szeretné összekapcsolni a saját Git-hitelesítő adatait. Pat használatához válassza a Személyes hozzáférési jogkivonatot, és adja meg a Git-fiók jogkivonat-adatait a szolgáltatásnév hozzáférésének hitelesítése során. A PAT beszerzéséről Git-szolgáltatótól bővebb információ a Git-hitelesítő adatok konfigurálása, valamint a & távoli adattárnak az Azure Databrickshezvaló csatlakoztatása részben található.

    Git-hitelesítő adatok csatolása egy Databricks-szolgáltatásnévhez

  6. A rendszer kérni fogja, hogy válassza ki a csatolandó Git-felhasználói fiókot. Válassza ki azt a Git-felhasználói fiókot, amelyet a szolgáltatásnév használni fog a hozzáféréshez, majd válassza a Folytatáslehetőséget. (Ha nem látja a használni kívánt felhasználói fiókot, válassza a Másik fiók használatalehetőséget.)

  7. A következő párbeszédpanelen válassza A Databricks engedélyezéselehetőséget. Rövid időre megjelenik a "Fiók csatolása..." üzenet majd a szolgáltatásnév frissített részletei.

    Git-hitelesítő adatok sikeres csatolásának megerősítő képernyője

A kiválasztott szolgáltatásnév mostantól alkalmazza a csatolt Git-hitelesítő adatokat az Azure Databricks-munkaterület Git-mappaerőforrásainak elérésekor az automatizálás részeként.

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.

Automatizált CI/CD-munkafolyamat létrehozása

  1. Á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ítsd be ezt a munkaterületed URL-címére. Ne foglalja bele a /?o részszúrást.
    • DEPLOYMENT_TARGET_TOKEN: Állítsa be ezt egy Databricks személyes hozzáférési jogkivonatra (PAT). A Databricks PAT-t az Azure Databricks személyes hozzáférési jogkivonat-hitelesítésiutasításait követve hozhatja létre.
  2. Lépjen a Git-adattár Műveletek lapjára, és kattintson az Új munkafolyamat gombra. Az oldal tetején válassza az Állítson be egy munkafolyamatot saját maga lehetőséget, és illessze be ezt a szkriptet:

    A

    # 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:
        paths-ignore:
          - .github
        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
        environment: development
        env:
          DATABRICKS_HOST: ${{ secrets.DEPLOYMENT_TARGET_URL }}
          DATABRICKS_TOKEN:  ${{ secrets.DEPLOYMENT_TARGET_TOKEN }}
          REPO_PATH: /Workspace/Users/someone@example.com/workspace-builder
          DBFS_LIB_PATH: dbfs:/path/to/libraries/
          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@v3
    
        - name: Setup Python
          uses: actions/setup-python@v3
          with:
          # Version range or exact version of a Python version to use, using SemVer's version range syntax.
            python-version: 3.8
    
        # Download the Databricks CLI. See https://github.com/databricks/setup-cli
        - uses: databricks/setup-cli@main
    
        - name: Install mods
          run: |
            pip install pytest setuptools wheel
    
        - 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 ${{env.REPO_PATH}} --branch "${{ steps.extract_branch.outputs.branch }}"
    
        - name: Build Wheel and send to Databricks DBFS workspace 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
    
  3. 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 annak a Git-mappának, ahol a jegyzetfüzetek frissülnek.
    • 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.
  4. Válassza Módosítások véglegesítése... 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.