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.
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.
- Mevcut Git deponuzu Databricks çalışma alanınıza kopyalayın.
- 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. - Azure Databricks not defterlerinde ve depodaki diğer dosyalarda değişikliklerinizi yapın.
- Değişikliklerinizi işleyin ve Git sağlayıcınıza gönderme.
- Katkıda bulunanlar artık Git deposunu kendi kullanıcı klasörüne kopyalayabilir.
- Yeni bir dal üzerinde çalışan bir iş arkadaşı, Git klasöründeki not defterlerinde ve diğer dosyalarda değişiklik yapar.
- Katkıda bulunan , değişiklikleri işler ve Git sağlayıcısına iletir.
- 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:
- Dalları birleştirin. Çakışma yoksa, birleştirme kullanılarak
git push
uzak Git deposuna gönderilir. - Başka bir dalda yeniden temel oluşturma.
- Dalları birleştirin. Çakışma yoksa, birleştirme kullanılarak
- Ç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.
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.core
iç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:
- Azure Databricks ile hizmet sorumlusu oluşturma.
- 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:
- Hizmet sorumlusu oluşturma. Bkz. Hizmet sorumlularıyla işleri çalıştırma.
- Hizmet sorumlusu için bir Microsoft Entra Id belirteci oluşturun.
- Hizmet sorumlusu oluşturduktan sonra, Hizmet Sorumluları API'sini kullanarak Azure Databricks çalışma alanınıza eklersiniz.
- 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
development
gü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.
- Tercih ettiğiniz dalla ilişkili depoyu (örneğin), not defterlerinizin en son sürümlerini içerecek şekilde
Otomatik CI/CD iş akışı oluşturma
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.
- DEPLOYMENT_TARGET_URL: Bunu çalışma alanı URL'nize ayarlayın. Alt dizeyi eklemeyin
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:
# 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
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
.
- DBFS_LIB_PATH: DBFS'de, ile başlayan
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.