Git'i Lakeflow İşleri ile kullanma

Görevler, kaynak kodunu doğrudan uzak bir Git deposundan çekebilir.

Aşağıdaki görev türleri uzak Git depolarını destekler:

  • Notebooks
  • Python betikleri
  • SQL dosyaları
  • veri derleme aracı (dbt) projeleri

Bir işteki tüm görevler, uzak depoda aynı commit'e referans vermelidir. bir iş çalıştırması başladığında, Azure Databricks belirtilen dalın veya işlemenin anlık görüntüsünü alır, böylece bu çalıştırmadaki tüm görevler kodun aynı sürümünü kullanır.

Uzak Git deposunda depolanan kodu çalıştıran bir görevin çalıştırma geçmişini görüntülediğinizde, Görev çalıştırması ayrıntıları bölmesi, çalıştırmayla ilişkili işleme SHA'sı da dahil olmak üzere Git ayrıntılarını içerir. Bkz. Görev çalıştırma geçmişini görüntüleme.

Uyarı

Uzak Git deposu kullanacak şekilde yapılandırılmış görevler çalışma alanı dosyalarına yazamaz. Bu görevlerin sürücü düğümüne bağlı kısa ömürlü depolamaya geçici veriler ve bir birime veya tabloya kalıcı veriler yazması gerekir.

Git deposu kaynağı kullanma ve Git klasörlerini kullanma.

Bu sayfada kaynak kodu doğrudan uzak git deposundan çekebilen görevler ele alınmaktadır. Çalışma alanları, çalışma alanınızdaki bir klasörün Git deposuyla eşitlendiği Git klasörleri adlı bir özelliği de destekler. Bir görev, kaynağı olarak git klasörünü kullanabilir. Ancak, depoyla eşitlemeyi yönetmeniz gerekir. Burada açıklandığı gibi uzak Git deposu kullanmak, iş çalıştırıldığında yeni kaynağı (varsa) otomatik olarak çeker.

Azure Databricks, yalnızca geliştirme sırasında hızlı yineleme ve test için Git klasörlerindeki çalışma alanı yollarına başvurmanızı önerir. Hazırlama ve üretim işleri için, görevleri bunun yerine uzak git deposuna başvuracak şekilde yapılandırın.

İş için Git sağlayıcısı yapılandırma

İşler kullanıcı arabiriminde uzak Git deposunu yapılandırmak için bir iletişim kutusu vardır. Bu iletişim kutusuna Git başlığının altındaki İş ayrıntıları bölmesinden veya Gitsağlayıcısı kullanmak üzere yapılandırılmış herhangi bir görevde erişilebilir. İletişim kutusuna erişmek için İş ayrıntıları bölmesinde Git ayarları ekle'ye tıklayın.

Git iletişim kutusunda (görev yapılandırması sırasında erişilirse Git bilgileri etiketli), aşağıdaki ayrıntıları girin:

  • Git deposu URL'si.
  • Açılan listeden Git sağlayıcınızı seçin.
  • Git başvuru alanına, çalıştırmak istediğiniz kaynak kodun sürümüne karşılık gelen bir dal, etiket veya işlemenin tanımlayıcısını girin.
  • Açılan listeden dal, etiket veya komit seçin.

Aşağıdakilerden yalnızca birini belirtmeniz gerekir:

  • branch: Dalın adı, örneğin, main.
  • tag: Etiketin adı, örneğin, release-1.0.0.
  • commit: Belirli bir işlemenin karması, örneğin, e0056d01.

Uyarı

İletişim kutusu size şu mesajı gösterebilir: Bu hesap için Git kimlik bilgileri eksik. Kimlik bilgilerini ekleyin. Bir uzak Git deposunu başvuru olarak kullanmadan önce yapılandırmanız gerekir. Bkz . Git klasörleri için Git tümleştirmesini yapılandırma.

Uzak Git deposunda depolanan kodu çalıştıran bir görevin çalıştırma geçmişini görüntülediğinizde, Görev çalıştırması ayrıntıları paneli, çalıştırmayla ilişkili işleme SHA'sı da dahil olmak üzere Git ayrıntılarını içerir. Bkz. Görev çalıştırma geçmişini görüntüleme.

Büyük depolar için kısmi checkout

Büyük depolar için seyrek denetim özelliğini kullanarak tam depo yerine yalnızca belirli dizinleri içeri aktarabilirsiniz. Seyrek kullanıma alma, iş çalıştırması başına kullanıma alma süresini ve kaynak kullanımını azaltır.

Ancak, yanlış yapılandırma önbellek parçalanmalarına neden olabilir ve bu da çalışma alanınızın tamamında yürütme sürelerini düşürür. Bu bölümde, seyrek checkout kullanılırken ortaya çıkabilecek ödünler ve sorunlar açıklanmaktadır.

Azure Databricks depo çekme işlemlerini nasıl önbelleğe alır?

Azure Databricks her Git ödemesi dört değere göre önbelleğe alınır:

  • Workspace
  • Depo URL'si
  • Tam işleme karması
  • Seyrek checkout deseninin parmak izi (klasör yollarının tam kümesi)

Dört ölçütle de eşleşen herhangi bir iş çalıştırması, önbellek girdisini yeniden kullanır ve bu girdi bir haftaya kadar geçerliliğini korur. Örneğin, 3 farklı işiniz varsa ve hepsi aynı ölçütlere sahipse, yeni bir işleme (1 hafta sonra) olana kadar depoda aynı önbelleği kullanırlar.

Her benzersiz seyrek checkout deseni, ayrı bir parmak izi ve dolayısıyla ayrı bir önbellek girişi oluşturur. Her kullanıcı kendi desenine özel bir klasör eklerse, sistem 20 ayrı önbellek anahtarı oluşturur. Bu durum, paylaşılan klasör ağacının 20 kez içeri aktarılması ve çalışma alanınıza olan yükün artması sonucunu doğurur. 20 klasörlerinin tümünü (örneğin, bir ana klasör) içerecek şekilde tek bir seyrek kullanım düzeni oluşturmak, tek bir önbelleğin daha sık çalışmasını ve işlerinizde daha iyi performans göstermesini sağlar. Bu işlem, ödeme işleminizde daha fazla sayıda dosyadır.

Seyrek dışarı aktarımın kullanılıp kullanılmayacağına karar verme

Seyrek alımı yalnızca kullanım durumunuzun aşağıdaki ölçütlerin her ikisini de karşılaması halinde etkinleştirin.

  • Boyut: Deponuz büyük (örneğin, 2.500 dosyayı aşıyor).
  • Kararlı hedefleme: Hedef dal seyrek olarak güncelleştirilir (örneğin, yaklaşık olarak saatte bir işlem veya daha az). Otomatik CI/CD iş akışları nedeniyle hızla değişen dallardan kaçının.

Seyrek kontrol kullanıyorsanız, kuruluşunuz aşağıdaki desen stratejilerinden birini veya her ikisini de uygulamalıdır:

  • Standartlaştırma: Önbellek isabetlerini en üst düzeye çıkarmak için kuruluş genelinde üç veya daha az paylaşılan checkout işlemi kullanın.
  • Mikro hedefleme: Her birinin az sayıda dosyayı hedeflemesi için desenleri yapılandırın. En iyi performans için 200'den az dosya hedefleyin.

Bunlar içeri aktarma oranınızı en aza indirmenize yardımcı olabilir.

İçeri aktarma oranınızı hesaplama

Seyrek kullanıma almayı etkinleştirmeden önce, tahmini Saatlik Dosyalar içeri aktarma oranınızı tahmin edin. Sınırlar tüm işlerde ve kullanıcılarda çalışma alanı düzeyinde geçerlidir.

Saat Başına Dosyalar = Saatteki İş Çalıştırmaları × Önbellek İsabetsizlik Oranı × İsabetsizlik Başına İçeri Aktarılan Dosyalar

Faktör Onu yönlendiren nedir?
Saat Başına İş Çalıştırma Sayısı Tüm kullanıcılar genelinde tetikleme sıklığı
Önbellek Isabetsizlik Oranı Hedef dalda işleme sıklığı ve benzersiz seyrek desen sayısı
Eksik Başına İçeri Aktarılan Dosyalar Toplam depo boyutu veya seyrek denetim alt kümesi boyutu

Örnek: 180 çalıştırma/saat × 10% kaçırılma oranı × 6.000 dosya/eksik = 108.000 dosya/saat

Sonucunuzu şu eşiklerle karşılaştırın:

Saat başına içeri aktarılan dosyalar Beklenen çalışma alanı etkisi
150.000'in altında Normal işlem
150,000 – 300,000 Performansta azalma. Bazı işler gecikme veya hatalarla karşılaşabilir.
300.000'in üzerinde İşler güvenilir bir şekilde tamamlanmaz.

En iyi yöntemler

Desenleri standartlaştırma

  • Do: Depo başına üç veya daha az onaylı seyrek desen yayımlayın. Paylaşılan desenler yükü birleştirir ve önbellek isabetlerini en üst düzeye çıkarır.
  • Yapmayın: Ekip başına özel desenlere izin vermeyin. Ek bir klasör bile yeni bir önbellek girdisi oluşturur ve tam yeniden içeri aktarmayı tetikler.

Değişiklik karmaşasını yönetme

  • Do: İşleri kararlı sürüm dalına yönlendirin. Batch, zamanlanmış sürüm pencereleriyle birleştirilerek birden fazla çalıştırmanın aynı önbelleğe alınmış komiti paylaşmasını sağlar.
  • Yapma: master veya main gibi sık güncelleştirilen dallarda seyrek checkout kullanın. Önbellek tam işleme karması temelinde olduğundan, her yeni işleme önbelleği geçersiz kılır ve her iş çalıştırması için tam yeniden içeri aktarmaya neden olur.

Yükü yönetme

  • Do: Depo boyutunu koşulsuz olarak azaltmak için kaynak denetimden büyük ikili dosyaları, oluşturulan yapıtları ve veri dosyalarını kaldırın.
  • Yapmayın: Gereksiz işleri yüksek sıklıkta çalışır durumda bırakmayın. Sürekli yürütme gerektirmeyen işler, zamanlamaları aşamalı hale getirme veya aynı kullanıma alma işlemini paylaşan işleri birleştirme durumlarında daha düşük tetikleme sıklığı kullanın.

Bir yayın dalı ile "commit churn" yönetimi

İşler, master veya main gibi hızlı hareket eden bir dalı hedeflediğinde, taahhüt karması sık sık değişir ve neredeyse her çalıştırmada önbellek hatalarına neden olur. Sabit bir zamanlamaya göre güncelleştirilen ayrılmış bir yayın dalı kullanmak önbellek isabet oranlarını iyileştirir.

Tüm işleri saatlik bir sürüm dalına işaret ederek, o saat içindeki tüm çalıştırmalar aynı commit karmasına çözülerek aynı önbellek girdisini kullanır.

Sürüm dalını yapılandırmak için:

  1. Git deponuzda uzun ömürlü bir dal (örneğin, release-candidate) oluşturun.
  2. Bu dalı, her saatin başı gibi sabit bir zamanlamayla master ile senkronize olacak şekilde otomatik olarak güncelleme işlemini gerçekleştirin.
  3. Git destekli işlerinizi, release-candidate hedef Git başvurusu olarak kullanacak şekilde yapılandırın.

Uygulamadan önce şu dengeleri gözden geçirin:

Değerlendirme Açıklama
İşleme gecikmesi İşler, kodun bir saat öncesine kadar olan sürümüne karşı çalıştırılır. Çoğu toplu iş yükü için kabul edilebilir, ancak en son commit'i gerektiren işlere uygun olmayabilir.
Hata penceresi Yayın kesim işlemi başarısız olursa, dal o saat için güncellenmez ve işler önceki taahhüde göre çalışmaya devam eder. Databricks, kesme işiyle ilgili uyarı önerir.

Örnek: GitHub Actions ile otomatikleştirme

Aşağıdaki GitHub Actions iş akışı, saatlik olarak yeni bir yayın dalı oluşturmaya yönelik otomasyon sağlar.

1. Adım: Deponuza dosya .github/workflows/cut-release-branch.yml işleme:

name: Cut Hourly Release Candidate

on:
  schedule:
    - cron: '0 * * * *'
  workflow_dispatch:

jobs:
  update-branch:
    runs-on: ubuntu-latest
    permissions:
      contents: write

    steps:
      - name: Checkout main branch
        uses: actions/checkout@v4
        with:
          ref: main
          fetch-depth: 0

      - name: Update release-candidate branch
        run: |
          git push origin HEAD:release-candidate --force

Step 2: release-candidate dalın oluşturulduğunu doğrulamak için GitHub Eylemini el ile tetikleyin.

3. Adım: Mevcut işlerinizi hedef Git başvurusu olarak kullanacak release-candidate şekilde güncelleştirin.

İşler API'sini kullanarak seyrek kullanıma alma özelliğini etkinleştirme

Seyrek checkout özelliğini etkinleştirmek için bir iş oluştururken veya güncelleştirirken sparse_checkout içine git_source blok ekleyin.

{
  "git_source": {
    "git_url": "https://github.com/example/my-repo",
    "git_provider": "gitHub",
    "git_branch": "release-candidate",
    "sparse_checkout": {
      "patterns": ["src/models", "src/utils"]
    }
  }
}

içindeki patterns her dize, depo köküne göre bir dizin yoludur. Belirtilen her dizindeki tüm dosyalar checkout işlemine dahil edilir.