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

Bu makalede, 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) dahil olmak üzere Azure Databricks not defterlerinize yazılım mühendisliği en iyi uygulamalarının nasıl uygulanacağını gösteren uygulamalı bir kılavuz sağlanır.

Bu kılavuzda ş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.
  • Not defterlerini bir Azure Databricks işinden ç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 integration altında, Git sağlayıcısı için GitHub öğesini seçin.
  4. Kişisel erişim belirteci'ne tıklayın.
  5. Git sağlayıcı kullanıcı adı veya e-posta için GitHub kullanıcı adınızı girin.
  6. Token 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 ile Kopyala URL'sini girin. Bu makalede, URL'nizin best-notebooks.git ile sona erdiğini varsayar, örneğin https://github.com/<your-GitHub-username>/best-notebooks.git.
    2. Git sağlayıcısı için GitHub öğesini 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 main dalı yerine master olarak adlandırılabilir. Eğer öyleyse, bu yürütmeyi boyunca main öğesini master ile değiştirin.

İpucu

Git dallarında çalışmaya aşina değilseniz, Git web sitesinde yer alan Özetle Git 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. best-notebooks iletişim kutusunda Create branch düğmesine tıklayın.

    Not

    Deponuzun adı best-notebooks dışında bir şeyse, bu iletişim kutusunun başlığı burada ve tüm 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:

  • csv dosyasını owid/covid-19-data GitHub deposundan çalışma alanınızdaki bir kümeye kopyalar. Bu CSV dosyası, COVID-19 hastane yatışları ve dünyanın dört bir yanından yoğun bakım ölçümleri hakkında halka açık veriler içerir.
  • CSV dosyasının içeriğini pandasDataFrame'de okur.
  • Verileri yalnızca Amerika Birleşik Devletleri'nden gelen ö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 üzerindeki Pandas API'sini çalışma alanınızda bir 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 covid_eda_raw deposundaki databricks/notebook-best-practices not defterinin ham içeriğinin URL'sini girin. Bu URL'yi almak için: i. Şuraya git: https://github.com/databricks/notebook-best-practices . ıı. Klasöre tıklayın notebooks. ııı. Dosyaya covid_eda_raw.py tıklayın. ıv. 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

      İçe Aktar iletişim kutusu yalnızca genel depoların Git URL'leri ile ç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 defterini eklemek 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. Defter ç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: Defteri kaydedin 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 Added raw notebook girin.
  4. Açıklama (isteğe bağlı) için This is the first version of the notebook.
  5. İşle ve Gönder'e 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 çekme isteğini main dalına birleştirin.
  8. Azure Databricks çalışma alanınıza dönün, hala gösteriliyorsa best-notebooks 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. best-notebooks iletişim kutusunda, eda dalı yanındaki açılır oka tıklayın ve main'i 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 covid_eda_modular deposundaki databricks/notebook-best-practices not defterinin ham içeriğinin URL'sini girin. Bu URL'yi almak için: i. Şuraya git: https://github.com/databricks/notebook-best-practices . ıı. Klasöre tıklayın notebooks. ııı. Dosyaya covid_eda_modular.py tıklayın. ıv. 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 best-notebooks Git klasörüne sağ tıklayın ve ardından Çok Düzeyli 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 paket 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. "Kümenizin Databricks Runtime sürümünü, Databricks Runtime sürüm notları ve uyumluluk kısmındaki 'Sistem ortamı' bölümünde bulabilirsiniz."

Depo diziliminiz şu an ş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, covid_eda_modular not defterini çalıştırırsınız, bu da covid_analysis/transforms.py içindeki paylaşılan kodu çağırır.

  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 defterini eklemek için kümeyi seçin.
  3. Tümünü Çalıştır'a tıklayın.
  4. Defter çalışırken bekleyin.

Not defteri çalışmasını tamamladıktan sonra, not defterinde, covid_eda_raw not defterine benzer sonuçlar görmeniz gerekir: verilerin bir grafiği ve Delta tablosunda 600'den fazla ham veri satırı. Bu not defterindeki temel fark, farklı bir filtrenin kullanılmasıdır ( iso_codeDZA 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. Defterin adının yanındaki Git "first_modules" dalı 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
    • notebooks/covid_eda_modular.py
  3. İşleme iletisi (gerekli) için Added refactored notebook girin.
  4. Açıklama (isteğe bağlı) için This is the second version of the notebook.
  5. İşle ve Gönder'e 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 çekme isteğini main dalına birleştirin.
  8. Azure Databricks çalışma alanınıza dönün, hala gösteriliyorsa best-notebooks 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, covid_eda_modular not defterini çalıştırmadan 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

Ek not defterleri için test etme yaklaşımları ve R ve Scala not defterleri için test etme yaklaşımları hakkında daha fazla bilgi için, bkz Not defterleri için birim testi.

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

  1. Defterin adının yanındaki Git "first_modules" dalı düğmesine tıklayın.
  2. Best-notebooks iletişim kutusunda, first_modules dalının yanındaki açılır oka tıklayın ve main seçeneğini 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 sonra 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 pytestfikstü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 diziliminiz şu an ş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 adım adım yönergeyi hızlandırmak için, içeri aktarılan bir not defterini bu alt adımda, önceki adımlarda belirtilen testleri çalıştırmak için kullanırsınız. Bu not defteri, testlerin bağımlı Python paketlerini çalışma alanınıza indirip yükler, testleri çalıştırır ve testlerin sonuçlarını raporlar. Kümenizin pytest çalıştırabilirsiniz ancak not defterinden çalıştırmak pytest daha kullanışlı olabilir.

Not

Geçerli dizindeki ve alt dizinlerindeki adları pytest veya test_*.py formuna uyan tüm dosyaları çalıştırmak için /*_test.py çalıştırılı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 run_unit_tests deposundaki databricks/notebook-best-practices not defterinin ham içeriğinin URL'sini girin. Bu URL'yi almak için: i. Şuraya git: https://github.com/databricks/notebook-best-practices . ıı. Klasöre tıklayın notebooks. ııı. Dosyaya run_unit_tests.py tıklayın. ıv. 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 defterini eklemek için kümeyi seçin.

  4. Tümünü Çalıştır'a tıklayın.

  5. Defter ç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 diziliminiz şu an ş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. Defterin adının yanındaki first_tests Git dalı 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:
    • tests/transforms_test.py
    • notebooks/run_unit_tests.py
    • tests/testdata.csv
  3. İşleme iletisi (gerekli) için Added tests girin.
  4. Açıklama (isteğe bağlı) için girinThese are the unit tests for the shared code..
  5. İşle ve Gönder'e 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 çekme isteğini main dalına birleştirin.
  8. Azure Databricks çalışma alanınıza dönün, hala gösteriliyorsa best-notebooks 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ınızda İş Akışları simgesine tıklayın.Kenar çubuğundaki İşler ve İşlem Hatları.
  2. Oluştur'a ve ardından İş'e tıklayın.
  3. covid_report olacak iş adını düzenleyin.
  4. İlk görevi yapılandırmak için Not Defteri kutucuğuna tıklayın. Not Defteri kutucuğu kullanılamıyorsa, Başka bir görev türü ekle'ye tıklayın ve Not Defteri'ni arayın.
  5. Görev adını girin run_notebook_tests.
  6. Gerekirse, Tür açılır menüsünden Not Defteri'ni seçin.
  7. Kaynak olarak Git sağlayıcısı'ı seçin.
  8. Git referansı ekle'ye tıklayın.
  9. Git bilgileri iletişim kutusunda:
    1. Git deposu URL’si için, GitHub deponuzun HTTPS ile Kopyala URL'sini girin. Bu makalede, URL'nizin best-notebooks.git ile sona erdiğini varsayar, örneğin https://github.com/<your-GitHub-username>/best-notebooks.git.
    2. Git sağlayıcısı için GitHub öğesini seçin.
    3. Git referansı (dal / etiket / işleme) için main girin.
    4. Git başvurusu (dal / etiket / işleme) yanında dal'ı seçin.
    5. Onayla'yı tıklatın.
  10. Yol için girinnotebooks/run_unit_tests. Dosya uzantısını eklemeyin .py .
  11. Küme için önceki adımdaki kümeyi seçin.
  12. 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. Dizüstü Bilgisayar'ı seçin.
  3. Görev adını girin run_main_notebook.
  4. Tür için Dizüstü Bilgisayar'ı seçin.
  5. Yol için girinnotebooks/covid_eda_modular. Dosya uzantısını eklemeyin .py .
  6. Küme için önceki adımdaki kümeyi seçin.
  7. Bağlı Olduğu değeri run_notebook-tests olarak doğrulayın.
  8. Görev oluştur'a tıklayın.

İşi çalıştırma adımı 5.3

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

  2. Açılır pencerede Çalıştırmayı görüntüle seçeneğine 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ş talep üzerine çalıştırıldı. Bu işi düzenli olarak çalışacak şekilde ayarlamak için Zamanlamalar ve tetikleyicilerle işleri otomatikleştirmebölümüne bakın.

(İ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 defterlerinizi belirli bir anda veya düzenli bir aralıkla çalıştırmak için bir görev kullandınız. Ancak, değişiklikler GitHub deponuzla birleştirildiğinde, GitHub Actions gibi bir CI/CD aracı kullanarak testleri otomatik olarak tetiklemeye çalışabilirsiniz.

6.1. Adım: Çalışma alanınıza GitHub erişimi 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 erişim için benzersiz bir Azure Databricks belirteci vererek yaparsınız.

Güvenlik sebepleriyle, Databricks, Azure Databricks çalışma alanınızdaki kullanıcının kişisel erişim belirtecini GitHub'da paylaşmanızı önermemektedir. Bunun yerine, Databricks, GitHub'a bir Microsoft Entra ID hizmet sorumlusuyla ilişkili bir Microsoft Entra ID belirteci vermenizi önerir. Yönergeler için, GitHub Actions Marketi'ndeki Databricks Notebook GitHub Action çalıştırma 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 keşif amacıyla GitHub'a vermek istiyorsanız ve Databricks'in güvenlik nedenleriyle bu uygulamayı önermediğini anlıyorsanız, ç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 run_unit_tests not defterini çalıştırmak 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 düzgün çalışabilmek 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 Code sekmesine tıklayın.

  2. main öğesinin yanındaki oka tıklayarak Dalları veya etiketleri değiştir açılan listesini genişletin.

  3. Dal bul veya oluştur kutusuna adding_github_actions yazın.

  4. 'main' dalından 'adding_github_actions' dalını oluştur'a tıklayın.

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

  6. Dosyanıza isim verin şeklinde .github/workflows/databricks_pull_request_tests.yml girin.

  7. Düzenleyici penceresinde aşağıdaki kodu girin. Bu kod, Run Databricks Notebook GitHub Action pull_request kancasını, run_unit_tests çalıştırmak için kullanır.

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

    • Azure Databricks <your-workspace-instance-URL> ile .
    • Daha önce oluşturduğunuz belirteci <your-access-token> ile değiştirin.
    • <your-cluster-id> classic compute ID hedefinizle 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 Uygula'ya tıklayın.

  9. Değişiklikleri İşle iletişim kutusunda, Create databricks_pull_request_tests.yml'i İşleme İletisi alanına girin

  10. Commit directly to the adding_github_actions dalını seçin ve Değişiklikleri İş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 talebini main dalına birleştirin.

(İ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 yapar ve ardından değişikliği GitHub deponuza gönderirsiniz; bu da önceki adımdaki GitHub Eylemine bağlı olarak testleri otomatik olarak tetikler.

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 first_tests adlı Git dalı düğmesine tıklayın.
  3. best-notebooks iletişim kutusunda, first_tests dalını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 trigger_tests Git dalı 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 Updated comment girin.
  4. Açıklama (isteğe bağlı) için This updates the comment for filter_country.
  5. İşle ve Gönder'e tıklayın.
  6. Git sağlayıcınızda bir çekme isteği oluşturun bannerında, çekme isteği bağlantısına tıklayın ve ardından GitHub'da çekme isteğini 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 talebini main dalına birleştirin.