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 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.

  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 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: Verzióvezérelt forráskód használata egy Azure Databricks-feladatban.

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.

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 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 curlPostman vagy a 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:

  1. Szolgáltatásnév létrehozása az Azure Databricks használatával.
  2. 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:

  1. Hozzon létre egy szolgáltatásnevet. Lásd: Feladatok futtatása szolgáltatásnévvel.
  2. Hozzon létre egy Microsoft Entra ID-jogkivonatot egy szolgáltatásnévhez.
  3. A szolgáltatásnév létrehozása után hozzáadja azt az Azure Databricks-munkaterülethez a Service Principals API-val.
  4. 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

  1. Létrehozott egy Git-mappát egy Databricks-munkaterületen, amely nyomon követi az egyesített alapágat.
  2. 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.

Lépések

Feljegyzés

Az 1. lépést a Git-adattár rendszergazdájának kell elvégeznie.

  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:

  2. 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:

    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:
          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
    
  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 ahhoz a Git-mappához, ahol a jegyzetfüzetek frissülnek. Például: /Repos/Develop.
    • LATEST_WH Enterprise kiadás L_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 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.