Aracılığıyla paylaş


Not defterleri için en iyi yazılım mühendisliği uygulamaları

Bu makalede, Azure Databricks not defterlerinize sürüm denetimi, kod paylaşımı, test ve isteğe bağlı olarak sürekli tümleştirme ve sürekli teslim veya dağıtım (CI/CD) gibi en iyi yazılım mühendisliği uygulamalarının nasıl uygulanacağını gösteren uygulamalı bir kılavuz sağlanır.

Bu bölümde şunları yapacaksınız:

  • Sürüm denetimi için Azure Databricks Git klasörlerine not defterleri ekleyin.
  • Not defterlerinden birinden kodun bölümlerini paylaşılabilir bir modüle ayıklayın.
  • Paylaşılan kodu test edin.
  • Bir Azure Databricks işinden not defterlerini çalıştırın.
  • İsteğe bağlı olarak paylaşılan koda CI/CD uygulayın.

Gereksinimler

Bu kılavuzu tamamlamak için aşağıdaki kaynakları sağlamanız gerekir:

1. Adım: Databricks Git klasörlerini ayarlama

Bu adımda, mevcut GitHub deponuzu mevcut Azure Databricks çalışma alanınızdaki Azure Databricks Git klasörlerine bağlarsınız.

Çalışma alanınızın GitHub deponuza bağlanmasını sağlamak için, daha önce yapmadıysanız çalışma alanınıza GitHub kimlik bilgilerinizi sağlamanız gerekir.

1.1. Adım: GitHub kimlik bilgilerinizi sağlayın

  1. Çalışma alanının sağ üst kısmındaki kullanıcı adınıza tıklayın ve ardından açılan listede Ayarlar'a tıklayın.
  2. Ayarlar kenar çubuğundaki Kullanıcı'nın altında Bağlı hesaplar'a tıklayın.
  3. Git tümleştirmesi'nin altında Git sağlayıcısı için GitHub'ı seçin.
  4. Kişisel erişim belirteci'ne tıklayın.
  5. Git sağlayıcısı kullanıcı adı veya e-postası için GitHub kullanıcı adınızı girin.
  6. Belirteç için GitHub kişisel erişim belirtecinizi (klasik) girin. Bu kişisel erişim belirtecinin (klasik) depo ve iş akışı izinlerine sahip olması gerekir.
  7. Kaydet'e tıklayın.

1.2. Adım: GitHub deponuza bağlanma

  1. Çalışma alanı kenar çubuğunda Çalışma Alanı'na tıklayın.
  2. Çalışma Alanı tarayıcısında Çalışma Alanı Kullanıcıları'nı >genişletin.
  3. Kullanıcı adı klasörünüze sağ tıklayın ve git klasörü oluştur'a > tıklayın.
  4. Git klasörü oluştur iletişim kutusunda:
    1. Git deposu URL'si için GitHub deponuzun HTTPS URL'si ile GitHub Kopyası'nı girin. Bu makalede, URL'nizin ile best-notebooks.gitsona erdiğini varsayar, örneğin https://github.com/<your-GitHub-username>/best-notebooks.git.
    2. Git sağlayıcısı için GitHub'ı seçin.
    3. Git klasörü adını deponuzun adına ayarlanmış olarak bırakın, örneğinbest-notebooks.
    4. Git klasörü oluştur'a tıklayın.

2. Adım: Not defterini içeri aktarma ve çalıştırma

Bu adımda, var olan bir dış not defterini deponuza aktaracaksınız. Bu izlenecek yol için kendi not defterlerinizi oluşturabilirsiniz, ancak işleri hızlandırmak için bunları burada size sunuyoruz.

2.1. Adım: Depoda çalışma dalı oluşturma

Bu alt adımda deponuzda adlı eda bir dal oluşturursunuz. Bu dal, deponuzun dalından bağımsız olarak dosyalar ve kodlar üzerinde çalışmanızı main sağlar. Bu, yazılım mühendisliğinin en iyi uygulamasıdır. (Dalınıza farklı bir ad verebilirsiniz.)

Not

Bazı depolarda dal main bunun yerine adlandırılmış master olabilir. Öyleyse, bu izlenecek yol boyunca öğesini ile master değiştirinmain.

İpucu

Git dallarında çalışmayı bilmiyorsanız Git web sitesindeki Bir Nutshell'de Git Dalları - Dallar bölümüne bakın.

  1. 1.2. Adımdaki Git klasörü açık olmalıdır. Değilse, Çalışma Alanı kenar çubuğunda Çalışma Alanı > Kullanıcıları'nı genişletin, ardından kullanıcı adı klasörünüzü genişletin ve Git klasörünüze tıklayın.

  2. Çalışma alanı gezinti içerik haritasının altındaki klasör adının yanındaki ana Git dalı düğmesine tıklayın.

  3. En iyi not defterleri iletişim kutusunda Dal oluştur düğmesine tıklayın.

    Not

    Deponuzun dışında bir adı best-notebooksvarsa, bu iletişim kutusunun başlığı burada ve bu kılavuz boyunca farklı olacaktır.

  4. yazın edave Oluştur'a tıklayın.

  5. Bu iletişim kutusunu kapatın.

2.2. Adım: Not defterini depoya aktarma

Bu alt adımda, var olan bir not defterini başka bir depodan deponuza aktaracaksınız. Bu not defteri aşağıdakileri yapar:

  • Owid/covid-19-data GitHub deposundaki csv dosyasını çalışma alanınızdaki bir kümeye kopyalar. Bu CSV dosyası, COVID-19 hastane hastaneleri ve dünyanın dört bir yanından yoğun bakım ölçümleri hakkında genel veriler içerir.
  • CSV dosyasının içeriğini pandas DataFrame'de okur.
  • Verileri yalnızca Birleşik Devletler ölçümleri içerecek şekilde filtreler.
  • Verilerin çizimini görüntüler.
  • Pandas DataFrame'i Spark DataFrame'de Pandas API'si olarak kaydeder.
  • Spark DataFrame'de Pandas API'sinde veri temizleme gerçekleştirir.
  • Spark DataFrame'deki Pandas API'sini çalışma alanınızda Delta tablosu olarak yazar.
  • Delta tablosunun içeriğini görüntüler.

Burada deponuzda kendi not defterinizi oluşturabilseniz de, bunun yerine var olan bir not defterini içeri aktarmak bu kılavuzu hızlandırmaya yardımcı olur. Bu dalda not defteri oluşturmak veya not defterini içeri aktarmak yerine var olan bir not defterini bu dala taşımak için bkz . Çalışma alanı dosyaları temel kullanımı.

  1. En iyi not defterleri Git klasöründe Klasör Oluştur'a > tıklayın.
  2. Yeni klasör iletişim kutusunda yazın notebooksve Oluştur'a tıklayın.
  3. Not defterleri klasöründe kebap ve ardından İçeri Aktar'a tıklayın.
  4. İçeri Aktar iletişim kutusunda:
    1. İçeri aktarma kaynağı için URL'yi seçin.

    2. GitHub'daki depoda not defterinin covid_eda_raw ham içeriğinin URL'sini databricks/notebook-best-practices girin. Bu URL'yi almak için: i. Şuraya git: https://github.com/databricks/notebook-best-practices . ii. Klasöre notebooks tıklayın. iii. Dosyaya covid_eda_raw.py tıklayın. iv. Ham'a tıklayın. v. Web tarayıcınızın adres çubuğundaki tam URL'yi İçeri Aktar iletişim kutusuna kopyalayın.

      Not

      İçeri Aktar iletişim kutusu yalnızca genel depolar için Git URL'leriyle çalışır.

    3. İçe aktar'a tıklayın.

2.3. Adım: Not defterini çalıştırma

  1. Not defteri henüz gösterilmiyorsa not defterleri klasörünü açın ve klasörün içindeki covid_eda_raw not defterine tıklayın.
  2. Bu not defterinin eklenmesi için kümeyi seçin. Küme oluşturma yönergeleri için bkz . Küme oluşturma.
  3. Tümünü Çalıştır'a tıklayın.
  4. Not defteri çalışırken bekleyin.

Not defterinin çalışması tamamlandıktan sonra, not defterinde verilerin bir çiziminin yanı sıra Delta tablosunda 600'den fazla ham veri satırı görmeniz gerekir. Bu not defterini çalıştırmaya başladığınızda küme zaten çalışmıyorsa, sonuçları görüntülemeden önce kümenin başlatılması birkaç dakika sürebilir.

2.4. Adım: Not defterini iade edin ve birleştirin

Bu alt adımda, çalışmanızı şu ana kadar GitHub deponuza kaydedersiniz. Ardından çalışma dalınızın not defterini deponuzun main dalı ile birleştirirsiniz.

  1. Not defterinin adının yanındaki eda Git dal düğmesine tıklayın.
  2. En iyi not defterleri iletişim kutusundaki Değişiklikler sekmesinde not defterleri/covid_eda_raw.py dosyasının seçili olduğundan emin olun.
  3. İşleme iletisi (gerekli) için girinAdded raw notebook.
  4. Açıklama (isteğe bağlı) içinThis is the first version of the notebook.
  5. İşleme ve Gönderme'ye tıklayın.
  6. Başlıktaki Git sağlayıcınızda çekme isteği oluşturma başlığındaki çekme isteği bağlantısına tıklayın.
  7. GitHub'da çekme isteğini oluşturun ve ardından çekme isteğini dalla birleştirin main .
  8. Azure Databricks çalışma alanınıza döndüğünüzde, hala gösteriliyorsa en iyi not defterleri iletişim kutusunu kapatın.

3. Adım: Kodu paylaşılan modüle taşıma

Bu adımda, not defterinizdeki kodun bir bölümünü not defterinizin dışındaki paylaşılan işlevler kümesine taşırsınız. Bu sayede bu işlevleri diğer benzer not defterleriyle kullanabilirsiniz. Bu sayede gelecekte kodlamayı hızlandırabilir ve daha öngörülebilir ve tutarlı not defteri sonuçları elde etmenize yardımcı olabilirsiniz. Bu kodu paylaşmak, bu işlevleri daha kolay bir şekilde test etmenizi de sağlar. Bu, bir yazılım mühendisliği en iyi uygulaması olarak kodunuzun genel kalitesini siz devam ettikçe yükseltebilir.

3.1. Adım: Depoda başka bir çalışma dalı oluşturma

  1. Not defterinin adının yanındaki eda Git dal düğmesine tıklayın.
  2. En iyi not defterleri iletişim kutusunda, eda dalı yanındaki açılan oka tıklayın ve main'ı seçin.
  3. Çek düğmesine tıklayın. Çekme işlemine devam etmek isteyip istemediğiniz sorulursa Onayla'ya tıklayın.
  4. Dal Oluştur düğmesine tıklayın.
  5. yazın first_modulesve Oluştur'a tıklayın. (Dalınıza farklı bir ad verebilirsiniz.)
  6. Bu iletişim kutusunu kapatın.

3.2. Adım: Not defterini depoya aktarma

Bu kılavuzu hızlandırmak için, bu alt adımda var olan başka bir not defterini deponuza aktarın. Bu not defteri önceki not defteriyle aynı işlemleri yapar, ancak bu not defteri not defterinin dışında depolanan paylaşılan kod işlevlerini çağırır. Burada deponuzda kendi not defterinizi oluşturabilir ve gerçek kod paylaşımını kendiniz yapabilirsiniz.

  1. Çalışma alanı tarayıcısından not defterleri klasörüne sağ tıklayın ve ardından İçeri Aktar'a tıklayın.
  2. İçeri Aktar iletişim kutusunda:
    1. İçeri aktarma kaynağı için URL'yi seçin.

    2. GitHub'daki depoda not defterinin covid_eda_modular ham içeriğinin URL'sini databricks/notebook-best-practices girin. Bu URL'yi almak için: i. Şuraya git: https://github.com/databricks/notebook-best-practices . ii. Klasöre notebooks tıklayın. iii. Dosyaya covid_eda_modular.py tıklayın. iv. Ham'a tıklayın. v. Web tarayıcınızın adres çubuğundaki tam URL'yi Not Defterlerini İçeri Aktar iletişim kutusuna kopyalayın.

      Not

      Not Defterlerini İçeri Aktar iletişim kutusu yalnızca genel depolar için Git URL'leriyle çalışır.

    3. İçe aktar'a tıklayın.

3.3. Adım: Not defterinin destekleyici paylaşılan kod işlevlerini ekleme

  1. Çalışma alanı tarayıcısından en iyi not defterleri Git klasörüne sağ tıklayın ve ardından Klasör Oluştur'a > tıklayın.

  2. Yeni klasör iletişim kutusunda yazın covid_analysisve Oluştur'a tıklayın.

  3. covid_analysis klasöründe Dosya Oluştur'a > tıklayın.

  4. Yeni Dosya Adı iletişim kutusunda yazın transforms.pyve Dosya Oluştur'a tıklayın.

  5. transforms.py düzenleyicisi penceresinde aşağıdaki kodu girin:

    import pandas as pd
    
    # Filter by country code.
    def filter_country(pdf, country="USA"):
      pdf = pdf[pdf.iso_code == country]
      return pdf
    
    # Pivot by indicator, and fill missing values.
    def pivot_and_clean(pdf, fillna):
      pdf["value"] = pd.to_numeric(pdf["value"])
      pdf = pdf.fillna(fillna).pivot_table(
        values="value", columns="indicator", index="date"
      )
      return pdf
    
    # Create column names that are compatible with Delta tables.
    def clean_spark_cols(pdf):
      pdf.columns = pdf.columns.str.replace(" ", "_")
      return pdf
    
    # Convert index to column (works with pandas API on Spark, too).
    def index_to_col(df, colname):
      df[colname] = df.index
      return df
    

İpucu

Diğer kod paylaşım teknikleri için bkz . Databricks not defterleri arasında kod paylaşma.

3.4. Adım: Paylaşılan kodun bağımlılıklarını ekleme

Yukarıdaki kod, kodun düzgün çalışmasını sağlamak için birkaç Python paketi bağımlılığına sahiptir. Bu alt adımda, bu paket bağımlılıklarını bildirirsiniz. Bağımlılıkların bildirilmesi, kitaplıkların kesin olarak tanımlanmış sürümlerini kullanarak yeniden üretilebilirliği artırır.

  1. Çalışma Alanı tarayıcısından best-notebooks Git klasörüne sağ tıklayın ve ardından Dosya Oluştur'a > tıklayın.

    Not

    Paket bağımlılıklarını listeleyen dosyanın not defterlerine veya covid_analysis klasörlerine değil Git klasörünün köküne gitmesini istiyorsunuz.

  2. Yeni Dosya Adı iletişim kutusunda yazın requirements.txtve Dosya Oluştur'a tıklayın.

  3. requirements.txt düzenleyicisi penceresinde aşağıdaki kodu girin:

    Not

    requirements.txt Dosya görünmüyorsa web tarayıcınızı yenilemeniz gerekebilir.

    -i https://pypi.org/simple
    attrs==21.4.0
    cycler==0.11.0
    fonttools==4.33.3
    iniconfig==1.1.1
    kiwisolver==1.4.2
    matplotlib==3.5.1
    numpy==1.22.3
    packaging==21.3
    pandas==1.4.2
    pillow==9.1.0
    pluggy==1.0.0
    py==1.11.0
    py4j==0.10.9.3
    pyarrow==7.0.0
    pyparsing==3.0.8
    pyspark==3.2.1
    pytest==7.1.2
    python-dateutil==2.8.2
    pytz==2022.1
    six==1.16.0
    tomli==2.0.1
    wget==3.2
    

    Not

    Yukarıdaki dosyada belirli paket sürümleri listelenir. Daha iyi uyumluluk için bu sürümlere, tüm amaçlı kümenizde yüklü olan sürümlerle çapraz başvuruda bulunabilirsiniz. Databricks Runtime sürüm notları sürümleri ve uyumluluğunda kümenizin Databricks Runtime sürümü için "Sistem ortamı" bölümüne bakın.

Depo yapınız şu şekilde görünmelidir:

|-- covid_analysis
│  └── transforms.py
├── notebooks
│  ├── covid_eda_modular
│  └── covid_eda_raw (optional)
└── requirements.txt

3.5. Adım: Yeniden düzenlenmiş not defterini çalıştırma

Bu alt adımda, içindeki paylaşılan kodu covid_analysis/transforms.pyçağıran not defterini çalıştırırsınızcovid_eda_modular.

  1. Çalışma alanı tarayıcısından not defterleri klasörünün içindeki covid_eda_modular not defterine tıklayın.
  2. Bu not defterinin eklenmesi için kümeyi seçin.
  3. Tümünü Çalıştır'a tıklayın.
  4. Not defteri çalışırken bekleyin.

Not defterinin çalışması tamamlandıktan sonra, not defterinde not defteriyle covid_eda_raw benzer sonuçlar görmeniz gerekir: Delta tablosunda verilerin bir çizimi ve 600'den fazla ham veri satırı. Bu not defterindeki temel fark, farklı bir filtrenin kullanılmasıdır ( iso_code DZA yerine USA). Bu not defterini çalıştırmaya başladığınızda küme zaten çalışmıyorsa, sonuçları görüntülemeden önce kümenin başlatılması birkaç dakika sürebilir.

  1. Not defterinin adının yanındaki Git dalını first_modules düğmesine tıklayın.
  2. En iyi not defterleri iletişim kutusundaki Değişiklikler sekmesinde aşağıdakilerin seçili olduğundan emin olun:
    • requirements.txt
    • covid_analysis/transforms.py
    • not defterleri/covid_eda_modular.py
  3. İşleme iletisi (gerekli) için girinAdded refactored notebook.
  4. Açıklama (isteğe bağlı) içinThis is the second version of the notebook.
  5. İşleme ve Gönderme'ye tıklayın.
  6. Başlıktaki Git sağlayıcınızda çekme isteği oluşturma başlığındaki çekme isteği bağlantısına tıklayın.
  7. GitHub'da çekme isteğini oluşturun ve ardından çekme isteğini dalla birleştirin main .
  8. Azure Databricks çalışma alanınıza döndüğünüzde, hala gösteriliyorsa en iyi not defterleri iletişim kutusunu kapatın.

4. Adım: Paylaşılan kodu test edin

Bu adımda, paylaşılan kodu son adımda test edin. Ancak, not defterini çalıştırmadan covid_eda_modular bu kodu test etmek istiyorsunuz. Bunun nedeni, paylaşılan kodun çalıştırılamaması durumunda not defterinin de çalışmama olasılığıdır. Ana not defterinizin daha sonra başarısız olmasına neden olmadan önce paylaşılan kodunuzda hataları yakalamak istiyorsunuz. Bu test tekniği bir yazılım mühendisliği en iyi uygulamasıdır.

İpucu

Not defterleri için test etme ve R ve Scala not defterleri için test etme hakkında ek yaklaşımlar için bkz . Not defterleri için birim testi.

4.1. Adım: Depoda başka bir çalışma dalı oluşturma

  1. Not defterinin adının yanındaki Git dalını first_modules düğmesine tıklayın.
  2. En iyi not defterleri iletişim kutusunda, first_modules dalın yanındaki açılan oka tıklayın ve main öğesini seçin.
  3. Çek düğmesine tıklayın. Çekme işlemine devam etmek isteyip istemediğiniz sorulursa Onayla'ya tıklayın.
  4. Dal Oluştur'a tıklayın.
  5. yazın first_testsve Oluştur'a tıklayın. (Dalınıza farklı bir ad verebilirsiniz.)
  6. Bu iletişim kutusunu kapatın.

4.2. Adım: Testleri ekleme

Bu alt adımda, paylaşılan kodunuzu test etmek için pytest çerçevesini kullanırsınız. Bu testlerde belirli test sonuçlarının alınıp alınmadığını onaylarsınız. Herhangi bir test beklenmeyen bir sonuç üretirse, bu test onaylama işlemini başarısız olur ve bu nedenle testin kendisi başarısız olur.

  1. Çalışma Alanı tarayıcısından Git klasörünüze sağ tıklayın ve ardından Klasör Oluştur'a > tıklayın.

  2. Yeni klasör iletişim kutusunda yazın testsve Oluştur'a tıklayın.

  3. Testler klasöründe Dosya Oluştur'a > tıklayın.

  4. Yeni Dosya Adı iletişim kutusunda yazın testdata.csvve Dosya Oluştur'a tıklayın.

  5. testdata.csv düzenleyici penceresinde aşağıdaki test verilerini girin:

    entity,iso_code,date,indicator,value
    United States,USA,2022-04-17,Daily ICU occupancy,
    United States,USA,2022-04-17,Daily ICU occupancy per million,4.1
    United States,USA,2022-04-17,Daily hospital occupancy,10000
    United States,USA,2022-04-17,Daily hospital occupancy per million,30.3
    United States,USA,2022-04-17,Weekly new hospital admissions,11000
    United States,USA,2022-04-17,Weekly new hospital admissions per million,32.8
    Algeria,DZA,2022-04-18,Daily ICU occupancy,1010
    Algeria,DZA,2022-04-18,Daily ICU occupancy per million,4.5
    Algeria,DZA,2022-04-18,Daily hospital occupancy,11000
    Algeria,DZA,2022-04-18,Daily hospital occupancy per million,30.9
    Algeria,DZA,2022-04-18,Weekly new hospital admissions,10000
    Algeria,DZA,2022-04-18,Weekly new hospital admissions per million,32.1
    
  6. Testler klasöründe Dosya Oluştur'a > tıklayın.

  7. Yeni Dosya Adı iletişim kutusunda yazın transforms_test.pyve Dosya Oluştur'a tıklayın.

  8. transforms_test.py düzenleyici penceresinde aşağıdaki test kodunu girin. Bu testler standart pytest fikstürlerin yanı sıra sahte bir bellek içi pandas DataFrame kullanır:

    # Test each of the transform functions.
    import pytest
    from textwrap import fill
    import os
    import pandas as pd
    import numpy as np
    from covid_analysis.transforms import *
    from pyspark.sql import SparkSession
    
    @pytest.fixture
    def raw_input_df() -> pd.DataFrame:
      """
      Create a basic version of the input dataset for testing, including NaNs.
      """
      return pd.read_csv('tests/testdata.csv')
    
    @pytest.fixture
    def colnames_df() -> pd.DataFrame:
      df = pd.DataFrame(
        data=[[0,1,2,3,4,5]],
        columns=[
          "Daily ICU occupancy",
          "Daily ICU occupancy per million",
          "Daily hospital occupancy",
          "Daily hospital occupancy per million",
          "Weekly new hospital admissions",
          "Weekly new hospital admissions per million"
        ]
      )
      return df
    
    # Make sure the filter works as expected.
    def test_filter(raw_input_df):
      filtered = filter_country(raw_input_df)
      assert filtered.iso_code.drop_duplicates()[0] == "USA"
    
    # The test data has NaNs for Daily ICU occupancy; this should get filled to 0.
    def test_pivot(raw_input_df):
      pivoted = pivot_and_clean(raw_input_df, 0)
      assert pivoted["Daily ICU occupancy"][0] == 0
    
    # Test column cleaning.
    def test_clean_cols(colnames_df):
      cleaned = clean_spark_cols(colnames_df)
      cols_w_spaces = cleaned.filter(regex=(" "))
      assert cols_w_spaces.empty == True
    
    # Test column creation from index.
    def test_index_to_col(raw_input_df):
      raw_input_df["col_from_index"] = raw_input_df.index
      assert (raw_input_df.index == raw_input_df.col_from_index).all()
    

Depo yapınız şu şekilde görünmelidir:

├── covid_analysis
│  └── transforms.py
├── notebooks
│  ├── covid_eda_modular
│  └── covid_eda_raw (optional)
├── requirements.txt
└── tests
    ├── testdata.csv
    └── transforms_test.py

4.3. Adım: Testleri çalıştırma

Bu kılavuzu hızlandırmak için, bu alt adımda önceki testleri çalıştırmak için içeri aktarılan bir not defteri kullanırsınız. Bu not defteri, testlerin bağımlı Python paketlerini indirip çalışma alanınıza yükler, testleri çalıştırır ve testlerin sonuçlarını raporlar. Kümenizin web terminalinden çalıştırabilirsiniz pytest ancak not defterinden çalıştırmak pytest daha kullanışlı olabilir.

Not

Çalıştırma pytest , adları forma test_*.py veya /*_test.py geçerli dizine ve alt dizinlerine uyan tüm dosyaları çalıştırır.

  1. Çalışma alanı tarayıcısından not defterleri klasörüne sağ tıklayın ve ardından İçeri Aktar'a tıklayın.
  2. Not Defterlerini İçeri Aktar iletişim kutusunda:
    1. İçeri aktarma kaynağı için URL'yi seçin.

    2. GitHub'daki depoda not defterinin run_unit_tests ham içeriğinin URL'sini databricks/notebook-best-practices girin. Bu URL'yi almak için: i. Şuraya git: https://github.com/databricks/notebook-best-practices . ii. Klasöre notebooks tıklayın. iii. Dosyaya run_unit_tests.py tıklayın. iv. Ham'a tıklayın. v. Web tarayıcınızın adres çubuğundaki tam URL'yi Not Defterlerini İçeri Aktar iletişim kutusuna kopyalayın.

      Not

      Not Defterlerini İçeri Aktar iletişim kutusu yalnızca genel depolar için Git URL'leriyle çalışır.

    3. İçe aktar'a tıklayın.

  3. Bu not defterinin eklenmesi için kümeyi seçin.
  4. Tümünü Çalıştır'a tıklayın.
  5. Not defteri çalışırken bekleyin.

Not defterinin çalışması tamamlandıktan sonra, not defterinde diğer ilgili ayrıntıların yanı sıra geçiş ve başarısız test sayısı hakkındaki bilgileri görmeniz gerekir. Bu not defterini çalıştırmaya başladığınızda küme zaten çalışmıyorsa, sonuçları görüntülemeden önce kümenin başlatılması birkaç dakika sürebilir.

Depo yapınız şu şekilde görünmelidir:

├── covid_analysis
│  └── transforms.py
├── notebooks
│  ├── covid_eda_modular
│  ├── covid_eda_raw (optional)
│  └── run_unit_tests
├── requirements.txt
└── tests
    ├── testdata.csv
    └── transforms_test.py
  1. Not defterinin adının yanındaki Git dalını first_tests düğmesine tıklayın.
  2. En iyi not defterleri iletişim kutusundaki Değişiklikler sekmesinde aşağıdakilerin seçili olduğundan emin olun:
    • testler/transforms_test.py
    • not defterleri/run_unit_tests.py
    • testler/testdata.csv
  3. İşleme iletisi (gerekli) için girinAdded tests.
  4. Açıklama (isteğe bağlı) için girinThese are the unit tests for the shared code..
  5. İşleme ve Gönderme'ye tıklayın.
  6. Başlıktaki Git sağlayıcınızda çekme isteği oluşturma başlığındaki çekme isteği bağlantısına tıklayın.
  7. GitHub'da çekme isteğini oluşturun ve ardından çekme isteğini dalla birleştirin main .
  8. Azure Databricks çalışma alanınıza döndüğünüzde, hala gösteriliyorsa en iyi not defterleri iletişim kutusunu kapatın.

5. Adım: Not defterlerini çalıştırmak için iş oluşturma

Önceki adımlarda, paylaşılan kodunuzu el ile test edip not defterlerinizi el ile çalıştırmıştınız. Bu adımda, paylaşılan kodunuzu test etmek ve not defterlerinizi isteğe bağlı olarak veya düzenli bir zamanlamaya göre otomatik olarak çalıştırmak için bir Azure Databricks işi kullanırsınız.

5.1. Adım: Test not defterini çalıştırmak için bir iş görevi oluşturma

  1. Çalışma alanı kenar çubuğunda İş Akışları'na tıklayın.
  2. İşler sekmesinde İş Oluştur'a tıklayın.
  3. olacak covid_reportişin adını düzenleyin.
  4. Görev adı olarak girinrun_notebook_tests.
  5. Tür için Not Defteri'ni seçin.
  6. Kaynak olarak Git sağlayıcısı'ı seçin.
  7. Git başvurusu ekle'ye tıklayın.
  8. Git bilgileri iletişim kutusunda:
    1. Git deposu URL'si için GitHub deponuzun HTTPS URL'si ile GitHub Kopyası'nı girin. Bu makalede, URL'nizin ile best-notebooks.gitsona erdiğini varsayar, örneğin https://github.com/<your-GitHub-username>/best-notebooks.git.
    2. Git sağlayıcısı için GitHub'ı seçin.
    3. Git başvurusu (dal / etiket / işleme) için girinmain.
    4. Git başvurusu (dal / etiket / işleme) öğesinin yanında dal'ı seçin.
    5. Onayla'yı tıklatın.
  9. Yol alanına girinnotebooks/run_unit_tests. Dosya uzantısını eklemeyin .py .
  10. Küme için önceki adımdaki kümeyi seçin.
  11. Görev oluştur'a tıklayın.

Not

Bu senaryoda Databricks, bu not defterini düzenli aralıklarla çalıştırmak üzere bir iş zamanlamak için zamanlanmış not defteri işlerini oluşturma ve yönetme başlığında açıklandığı gibi not defterindeki zamanlama düğmesini kullanmanızı önermez. Bunun nedeni, zamanlama düğmesinin çalışma alanı deposundaki not defterinin en son çalışan kopyasını kullanarak bir iş oluşturmasıdır. Bunun yerine Databricks, depodaki not defterinin en son kaydedilmiş sürümünü kullanan bir iş oluşturmak için önceki yönergeleri izlemenizi önerir.

5.2. Adım: Ana not defterini çalıştırmak için bir iş görevi oluşturma

  1. + Görev ekle simgesine tıklayın.
  2. Bir açılır menü görüntülenir. Not defteri'ni seçin.
  3. Görev adı olarak girinrun_main_notebook.
  4. Tür için Not Defteri'ni seçin.
  5. Yol alanına girinnotebooks/covid_eda_modular. Dosya uzantısını eklemeyin .py .
  6. Küme için önceki adımdaki kümeyi seçin.
  7. Değerin değerine bağlı olduğunu run_notebook-testsdoğrulayın.
  8. Görev oluştur'a tıklayın.

5.3. Adım İşi çalıştırma

  1. Şimdi çalıştır üzerine tıklayın.

  2. Açılır pencerede Çalıştırmayı görüntüle'ye tıklayın.

    Not

    Açılır pencere çok hızlı bir şekilde kaybolursa aşağıdakileri yapın:

    1. Veri Bilimi ve Mühendislik veya Databricks Mozaik AI ortamındaki kenar çubuğunda İş Akışları'na tıklayın.
    2. İş çalıştırmaları sekmesinde, İşler sütununda covid_report olan en son işin Başlangıç zamanı değerine tıklayın.
  3. İş sonuçlarını görmek için run_notebook_tests kutucuğuna, run_main_notebook kutucuğuna veya her ikisine de tıklayın. Her kutucukta elde edilen sonuçlar, not defterlerini tek tek çalıştırdığınızla aynıdır.

Not

Bu iş isteğe bağlı olarak çalıştı. Bu işi düzenli olarak çalışacak şekilde ayarlamak için bkz . Databricks İşleri için tetikleyici türleri.

(İsteğe bağlı) 6. Adım: Kodu test etmek için depoyu ayarlama ve kod değiştiğinde not defterini otomatik olarak çalıştırma

Önceki adımda, paylaşılan kodunuzu otomatik olarak test etmek ve not defterlerinizi belirli bir zamanda veya yinelenen olarak çalıştırmak için bir iş kullandınız. Ancak, GitHub Actions gibi bir CI/CD aracı kullanarak, değişiklikler GitHub deponuzla birleştirildiğinde testleri otomatik olarak tetiklemeye çalışabilirsiniz.

6.1. Adım: Çalışma alanınıza GitHub erişimini ayarlama

Bu alt adımda, değişiklikler deponuzla birleştirildiğinde çalışma alanında işleri çalıştıran bir GitHub Actions iş akışı ayarlarsınız. Bunu, GitHub'a erişim için benzersiz bir Azure Databricks belirteci vererek yaparsınız.

Güvenlik nedeniyle Databricks, Azure Databricks çalışma alanı kullanıcınızın kişisel erişim belirtecini GitHub'a vermenizi önerilmez. Bunun yerine Databricks, GitHub'a Microsoft Entra ID hizmet sorumlusuyla ilişkili bir Microsoft Entra ID belirteci vermenizi önerir. Yönergeler için GitHub Actions Marketi'ndeki Databricks Not Defteri GitHub Eylemini Çalıştır sayfasının Azure bölümüne bakın.

Önemli

Not defterleri, belirteçle ilişkili kimliğin tüm çalışma alanı izinleri ile çalıştırıldığından Databricks bir hizmet sorumlusu kullanılmasını önerir. Azure Databricks çalışma alanı kullanıcınızın kişisel erişim belirtecini yalnızca kişisel araştırma amacıyla GitHub'a vermek istiyorsanız ve Databricks'in bu uygulamayı engellemesine neden olan güvenlik nedenleriyle çalışma alanı kullanıcınızın kişisel erişim belirtecini oluşturma yönergelerine bakın.

6.2. Adım: GitHub Actions iş akışını ekleme

Bu alt adımda, depoya çekme isteği olduğunda not defterini çalıştırmak run_unit_tests için bir GitHub Actions iş akışı eklersiniz.

Bu alt adım, GitHub Actions iş akışını GitHub deponuzdaki birden çok klasör düzeyinde depolanan bir dosyada depolar. GitHub Actions'ın düzgün çalışması için deponuzda belirli bir iç içe klasör hiyerarşisi olması gerekir. Azure Databricks Git klasörü kullanıcı arabirimi iç içe klasör hiyerarşileri oluşturmayı desteklemediğinden bu adımı tamamlamak için GitHub deponuzun web sitesini kullanmanız gerekir.

  1. GitHub deponuzun web sitesinde Kod sekmesine tıklayın.

  2. Dalları veya etiketleri değiştir açılan listesini genişletmek için main öğesinin yanındaki oka tıklayın.

  3. Dal bul veya oluştur kutusuna yazınadding_github_actions.

  4. Dal oluştur'a tıklayın : 'main'dan adding_github_actions.

  5. Dosya ekle Yeni dosya >oluştur'a tıklayın.

  6. Dosyanızı adlandır için girin.github/workflows/databricks_pull_request_tests.yml.

  7. Düzenleyici penceresinde aşağıdaki kodu girin. Bu kod, not defterini çalıştırmak için Databricks Not Defteri GitHub Eylemi'nden pull_request kancasını run_unit_tests kullanır.

    Aşağıdaki kodda şunu değiştirin:

    • <your-workspace-instance-URL> azure databricks örneğinizin adını yazın.
    • <your-access-token> daha önce oluşturduğunuz belirteci kullanın.
    • <your-cluster-id> hedef küme kimliğiniz ile birlikte.
    name: Run pre-merge Databricks tests
    
    on:
      pull_request:
    
    env:
      # Replace this value with your workspace instance name.
      DATABRICKS_HOST: https://<your-workspace-instance-name>
    
    jobs:
      unit-test-notebook:
        runs-on: ubuntu-latest
        timeout-minutes: 15
    
        steps:
          - name: Checkout repo
            uses: actions/checkout@v2
          - name: Run test notebook
            uses: databricks/run-notebook@main
            with:
              databricks-token: <your-access-token>
    
              local-notebook-path: notebooks/run_unit_tests.py
    
              existing-cluster-id: <your-cluster-id>
    
              git-commit: "${{ github.event.pull_request.head.sha }}"
    
              # Grant all users view permission on the notebook's results, so that they can
              # see the result of the notebook, if they have related access permissions.
              access-control-list-json: >
                [
                  {
                    "group_name": "users",
                    "permission_level": "CAN_VIEW"
                  }
                ]
              run-name: "EDA transforms helper module unit tests"
    
  8. Değişiklikleri işle'ye tıklayın.

  9. Değişiklikleri işle iletişim kutusunda İşleme iletisine girin Create databricks_pull_request_tests.yml

  10. Doğrudan adding_github_actions dalda İşle'yi seçin ve Değişiklikleri işle'ye tıklayın.

  11. Kod sekmesinde Karşılaştır & çekme isteği'ne tıklayın ve çekme isteğini oluşturun.

  12. Çekme isteği sayfasında, Birleştirme öncesi Databricks testlerini çalıştır / unit-test-notebook (pull_request) öğesinin yanındaki simgenin yeşil onay işareti görüntülemesini bekleyin. (Simgenin görünmesi birkaç dakika sürebilir.) Yeşil onay işareti yerine kırmızı bir X işareti varsa nedenini öğrenmek için Ayrıntılar'a tıklayın. Simge veya Ayrıntılar artık gösterilmiyorsa Tüm denetimleri göster'e tıklayın.

  13. Yeşil onay işareti görünürse, çekme isteğini dalla birleştirin main .

(İsteğe bağlı) 7. Adım: Testleri tetikleme amacıyla GitHub'da paylaşılan kodu güncelleştirme

Bu adımda, paylaşılan kodda bir değişiklik yapacak ve ardından değişikliği GitHub deponuza göndererek önceki adımdaki GitHub Eylemine göre testleri otomatik olarak hemen tetiklersiniz.

7.1. Adım: Depoda başka bir çalışma dalı oluşturma

  1. Çalışma alanı tarayıcısından en iyi not defterleri Git klasörünü açın.
  2. Klasörün adının yanındaki Git dalını first_tests düğmesine tıklayın.
  3. En iyi not defterleri iletişim kutusunda, first_tests dalın yanındaki açılan oka tıklayın ve main öğesini seçin.
  4. Çek düğmesine tıklayın. Çekme işlemine devam etmek isteyip istemediğiniz sorulursa Onayla'ya tıklayın.
  5. + (Dal oluştur) düğmesine tıklayın.
  6. yazın trigger_testsve Oluştur'a tıklayın. (Dalınıza farklı bir ad verebilirsiniz.)
  7. Bu iletişim kutusunu kapatın.

7.2. Adım: Paylaşılan kodu değiştirme

  1. Çalışma alanı tarayıcısından, en iyi not defterleri Git klasöründe covid_analysis/transforms.py dosyasına tıklayın.

  2. Bu dosyanın üçüncü satırını değiştirin:

    # Filter by country code.
    

    Bunun için:

    # Filter by country code. If not specified, use "USA."
    

7.3. Adım: Testleri tetikleme değişikliğini denetleyin

  1. Dosya adının yanındaki Git dalını trigger_tests düğmesine tıklayın.
  2. En iyi not defterleri iletişim kutusundaki Değişiklikler sekmesinde covid_analysis/transforms.py seçildiğinden emin olun.
  3. İşleme iletisi (gerekli) için girinUpdated comment.
  4. Açıklama (isteğe bağlı) içinThis updates the comment for filter_country.
  5. İşleme ve Gönderme'ye tıklayın.
  6. Başlıktaki Git sağlayıcınızda çekme isteği oluşturma başlığındaki çekme isteği bağlantısına tıklayın ve ardından çekme isteğini GitHub'da oluşturun.
  7. Çekme isteği sayfasında, Birleştirme öncesi Databricks testlerini çalıştır / unit-test-notebook (pull_request) öğesinin yanındaki simgenin yeşil onay işareti görüntülemesini bekleyin. (Simgenin görünmesi birkaç dakika sürebilir.) Yeşil onay işareti yerine kırmızı bir X işareti varsa nedenini öğrenmek için Ayrıntılar'a tıklayın. Simge veya Ayrıntılar artık gösterilmiyorsa Tüm denetimleri göster'e tıklayın.
  8. Yeşil onay işareti görünürse, çekme isteğini dalla birleştirin main .