Git ve Databricks Git klasörleriyle CI/CD teknikleri (Depolar)

CI/CD iş akışlarında Databricks Git klasörlerini kullanma tekniklerini öğrenin. Çalışma alanında Databricks Git klasörlerini yapılandırarak Git depolarındaki proje dosyaları için kaynak denetimini kullanabilir ve bunları veri mühendisliği işlem hatlarınızla tümleştirebilirsiniz.

Aşağıdaki şekilde tekniklere ve iş akışına genel bir bakış gösterilmektedir.

Git klasörleri için CI/CD tekniklerine genel bakış.

Azure Databricks ile CI/CD'ye genel bakış için bkz . Azure Databricks'te CI/CD nedir?.

Geliştirme akışı

Databricks Git klasörlerinin kullanıcı düzeyinde klasörleri vardır. Kullanıcılar uzak bir depoyu ilk kopyaladığında kullanıcı düzeyi klasörler otomatik olarak oluşturulur. Kullanıcı klasörlerindeki Databricks Git klasörlerini, her kullanıcı için ayrı ayrı olan ve kullanıcıların kodlarında değişiklik yaptıkları "yerel kullanıma almalar" olarak düşünebilirsiniz.

Databricks Git klasörlerindeki kullanıcı klasörünüzde uzak deponuzu kopyalayın. En iyi yöntem, değişiklikleri doğrudan işleyip ana dala göndermek yerine yeni bir özellik dalı oluşturmak veya daha önce oluşturulmuş bir dalı çalışmanız için seçmektir. Bu dalda değişiklik yapabilir, işleyebilir ve gönderebilirsiniz. Kodunuzu birleştirmeye hazır olduğunuzda, bunu Git klasörleri kullanıcı arabiriminde yapabilirsiniz.

Gereksinimler

Bu iş akışı, Git tümleştirmenizi zaten ayarlamış olmanız gerekir.

Not

Databricks, her geliştiricinin kendi özellik dalında çalışmasını önerir. Birleştirme çakışmalarını çözme hakkında bilgi için bkz . Birleştirme çakışmalarını çözme.

Git klasörlerinde işbirliği yapma

Aşağıdaki iş akışı, ana dalı temel alan adlı feature-b bir dal kullanır.

  1. Mevcut Git deponuzu Databricks çalışma alanınıza kopyalayın.
  2. Ana daldan bir özellik dalı oluşturmak için Git klasörleri kullanıcı arabirimini kullanın. Bu örnek basitlik için tek bir özellik dalı feature-b kullanır. İşinizi yapmak için birden çok özellik dalı oluşturabilir ve kullanabilirsiniz.
  3. Azure Databricks not defterlerinde ve depodaki diğer dosyalarda değişikliklerinizi yapın.
  4. Değişikliklerinizi işleyin ve Git sağlayıcınıza gönderme.
  5. Katkıda bulunanlar artık Git deposunu kendi kullanıcı klasörüne kopyalayabilir.
    1. Yeni bir dal üzerinde çalışan bir iş arkadaşı, Git klasöründeki not defterlerinde ve diğer dosyalarda değişiklik yapar.
    2. Katkıda bulunan , değişiklikleri işler ve Git sağlayıcısına iletir.
  6. Diğer dallardaki değişiklikleri birleştirmek veya Databricks'teki feature-b dalını yeniden temel almak için Git klasörleri kullanıcı arabiriminde aşağıdaki iş akışlarından birini kullanın:
  7. Çalışmanızı uzak Git deposu ve main dalı ile birleştirmeye hazır olduğunuzda, feature-b'den değişiklikleri birleştirmek için Git klasörleri kullanıcı arabirimini kullanın. İsterseniz, bunun yerine değişiklikleri doğrudan Git klasörünüzü yedekleyerek Git deposuyla birleştirebilirsiniz.

Üretim işi iş akışı

Databricks Git klasörleri, üretim işlerinizi çalıştırmak için iki seçenek sağlar:

  • 1. Seçenek: İş tanımında bir uzak Git başvurusu sağlayın. Örneğin, Git deposunun main dalında belirli bir not defterini çalıştırın.
  • Seçenek 2: Bir üretim Git deposu ayarlayın ve program aracılığıyla güncelleştirmek için Depo API'lerini çağırın. Bu uzak depoyu kopyalayan Databricks Git klasöründe işleri çalıştırın. Repos API çağrısı işin ilk görevi olmalıdır.

1. Seçenek: Uzak depodaki not defterlerini kullanarak işleri çalıştırma

Uzak git deposunda bulunan not defterlerini kullanarak bir Azure Databricks işi çalıştırarak iş tanımı işlemini basitleştirin ve tek bir gerçek kaynağı tutun. Bu Git başvurusu bir Git işlemesi, etiketi veya dalı olabilir ve iş tanımında sizin tarafınızdan sağlanır.

Bu, kullanıcının üretim deposunda yerel düzenlemeler yapması veya dalları değiştirmesi gibi, üretim işinizde yanlışlıkla yapılan değişiklikleri önlemeye yardımcı olur. Ayrıca, Databricks'te ayrı bir üretim Git klasörü oluşturmanız, izinlerini yönetmeniz ve güncel tutmanız gerekmediğinden CD adımını otomatikleştirir.

Bkz . Git'i işlerle kullanma.

2. Seçenek: Üretim Git klasörü ve Git otomasyonu ayarlama

Bu seçenekte, birleştirmede Git klasörünü güncelleştirmek için bir üretim Git klasörü ve otomasyonu ayarlarsınız.

1. Adım: Üst düzey klasörleri ayarlama

Yönetici, kullanıcı dışı üst düzey klasörler oluşturur. Bu üst düzey klasörlerin en yaygın kullanım örneği, geliştirme, hazırlama ve üretim için uygun sürümler veya dallar için Databricks Git klasörleri içeren geliştirme, hazırlama ve üretim klasörleri oluşturmaktır. Örneğin, şirketiniz üretim için dalı kullanıyorsa main , "üretim" Git klasörünün dalını main kullanıma almış olması gerekir.

Bu üst düzey klasörlerdeki izinler genellikle çalışma alanı içindeki yönetici olmayan tüm kullanıcılar için salt okunur olur. Bu tür üst düzey klasörler için, çalışma alanı kullanıcıları tarafından üretim kodunuzda yanlışlıkla yapılan düzenlemeleri önlemek için yalnızca CAN EDIT ve CAN MANAGE izinlerine sahip hizmet sorumluları sağlamanızı öneririz.

Üst düzey Git klasörleri.

2. Adım: Git klasörleri API'siyle Databricks Git klasörlerine yönelik otomatik güncelleştirmeleri ayarlama

Databricks'te bir Git klasörünü en son sürümde tutmak için, Git otomasyonunu Repos API'sini çağıracak şekilde ayarlayabilirsiniz. Git sağlayıcınızda, bir çekme isteğinin ana dalla başarılı bir şekilde birleştirilmesinin ardından ilgili Git klasöründeki Repos API uç noktasını çağırarak bunu en son sürüme güncelleştiren otomasyonu ayarlayın.

Örneğin, GitHub'da bu, GitHub Actions ile elde edilebilir. Daha fazla bilgi için repos API'sine bakın.

Databricks not defteri hücresinden herhangi bir Databricks REST API'sini çağırmak için önce ile %pip install databricks-sdk --upgrade Databricks SDK'sını yükleyin (en son Databricks REST API'leri için) ve ardından 'den databricks.sdk.coreiçeri aktarınApiClient.

Not

"Paket bulunamadı" hatası döndürürse %pip install databricks-sdk --upgrade , databricks-sdk paket daha önce yüklenmemiştir. komutunu bayrağı olmadan --upgrade yeniden çalıştırın: %pip install databricks-sdk.

Çalışma alanınızın hizmet sorumlularını almak için bir not defterinden Databricks SDK API'lerini de çalıştırabilirsiniz. Python ve Python için Databricks SDK'sını kullanan bir örnek aşağıda verilmiştir.

Veya Terraform gibi curl araçları da kullanabilirsiniz. Azure Databricks kullanıcı arabirimini kullanamazsınız.

Azure Databricks'te hizmet sorumluları hakkında daha fazla bilgi edinmek için bkz . Hizmet sorumlularını yönetme. Hizmet sorumluları ve CI/CD hakkında bilgi için bkz . CI/CD için hizmet sorumluları. Bir not defterinden Databricks SDK'sını kullanma hakkında daha fazla ayrıntı için Databricks not defterinin içinden Python için Databricks SDK'sını kullanma makalesini okuyun.

Databricks Git klasörleriyle hizmet sorumlusu kullanma

Yukarıda belirtilen iş akışlarını hizmet sorumlularıyla çalıştırmak için:

  1. Azure Databricks ile hizmet sorumlusu oluşturma.
  2. Git kimlik bilgilerini ekleyin: Hizmet sorumlusu için Git sağlayıcı PAT'nizi kullanın.

Hizmet sorumlularını ayarlamak ve git sağlayıcısı kimlik bilgilerini eklemek için:

  1. Hizmet sorumlusu oluşturma. Bkz. Hizmet sorumlularıyla işleri çalıştırma.
  2. Hizmet sorumlusu için bir Microsoft Entra Id belirteci oluşturun.
  3. Hizmet sorumlusu oluşturduktan sonra, Hizmet Sorumluları API'sini kullanarak Azure Databricks çalışma alanınıza eklersiniz.
  4. Microsoft Entra ID belirteciniz ve Git Kimlik Bilgileri API'si ile Git sağlayıcısı kimlik bilgilerinizi çalışma alanınıza ekleyin.

Terraform tümleştirmesi

Terraform ve databricks_repo kullanarak databricks Git klasörlerini tam otomatik bir kurulumda da yönetebilirsiniz:

resource "databricks_repo" "this" {
  url = "https://github.com/user/demo.git"
}

Terraform kullanarak hizmet sorumlusuna Git kimlik bilgilerini eklemek için aşağıdaki yapılandırmayı ekleyin:

  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"
  }

Databricks Git klasörleriyle otomatik CI/CD işlem hattı yapılandırma

GitHub Action olarak çalıştırabileceğiniz basit bir otomasyon aşağıdadır.

Gereksinimler

  • Databricks çalışma alanında, birleştirilmekte olan temel dalı izleyen bir Git klasörü oluşturdunuz.
  • DBFS konumuna yerleştirecek yapıtları oluşturan bir Python paketiniz var. Kodunuz:
    • Tercih ettiğiniz dalla ilişkili depoyu (örneğin), not defterlerinizin en son sürümlerini içerecek şekilde developmentgüncelleştirin.
    • Herhangi bir yapıt oluşturun ve bunları kitaplık yoluna kopyalayın.
    • İşinizdeki yapıt sürümlerini el ile güncelleştirmek zorunda kalmamak için derleme yapıtlarının son sürümlerini değiştirin.

Otomatik CI/CD iş akışı oluşturma

  1. Kodunuzun Databricks çalışma alanına erişebilmesi için gizli diziler ayarlayın. Github deposuna aşağıdaki gizli dizileri ekleyin:

    • DEPLOYMENT_TARGET_URL: Bunu çalışma alanı URL'nize ayarlayın. Alt dizeyi eklemeyin /?o .
    • DEPLOYMENT_TARGET_TOKEN: Bunu Databricks Kişisel Erişim Belirteci (PAT) olarak ayarlayın. Azure Databricks kişisel erişim belirteci kimlik doğrulamasındaki yönergeleri izleyerek Databricks PAT oluşturabilirsiniz.
  2. Git deponuzun Eylemler sekmesine gidin ve Yeni iş akışı düğmesine tıklayın. Sayfanın üst kısmında, İş akışını kendiniz ayarla'yı seçin ve bu betiği yapıştırın:

    GitHub Actions kullanıcı arabirimindeki

    # 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. Aşağıdaki ortam değişkeni değerlerini kendi ortamınızla güncelleştirin:

    • DBFS_LIB_PATH: DBFS'de, ile başlayan dbfs:bu otomasyonda kullanacağınız kitaplıklara (tekerlekler) giden yol. Örneğin, .dbfs:/mnt/myproject/libraries
    • REPO_PATH: Databricks çalışma alanınızdaki, not defterlerinin güncelleştirileceği Git klasörüne giden yol.
    • LATEST_WHEEL_NAME: Son derlenmiş Python tekerlek dosyasının (.whl) adı. Bu, Databricks işlerinizdeki tekerlek sürümlerini el ile güncelleştirmekten kaçınmak için kullanılır. Örneğin, your_wheel-latest-py3-none-any.whl.
  4. Betiği GitHub Actions iş akışı olarak işlemek için Değişiklikleri işle... öğesini seçin. Bu iş akışı için çekme isteği birleştirildikten sonra Git deposunun Eylemler sekmesine gidin ve eylemlerin başarılı olduğunu onaylayın.