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:
Databricks'in desteklediği git sağlayıcısına sahip bir uzak depo. Bu makalenin kılavuzunda GitHub kullanılmaktadır. Bu kılavuzda kullanılabilir adlı
best-notebooks
bir GitHub deponuz olduğu varsayılır. (Deponuza farklı bir ad verebilirsiniz. Bunu yaparsanız, bu izlenecek yol boyunca değerini deponuzun adıyla değiştirinbest-notebooks
.) Henüz bir GitHub deponuz yoksa bir GitHub deposu oluşturun.Not
Yeni bir depo oluşturursanız, depoyu en az bir dosyayla (örneğin bir
README
dosya) başlatmayı unutmayın.Azure Databricks çalışma alanı. Henüz bir çalışma alanınız yoksa bir çalışma alanı oluşturun.
Çalışma alanında bir Azure Databricks çok amaçlı küme . Not defterlerini tasarım aşamasında çalıştırmak için, not defterlerini çalışan çok amaçlı bir kümeye eklersiniz. Daha sonra bu kılavuzda, bu kümede not defterlerini çalıştırmayı otomatikleştirmek için bir Azure Databricks işi kullanılır. (İşleri yalnızca işlerin kullanım ömrü boyunca var olan iş kümelerinde de çalıştırabilirsiniz.) Henüz bir kümeniz yoksa, çok amaçlı bir küme oluşturun.
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
- Ç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.
- Ayarlar kenar çubuğundaki Kullanıcı'nın altında Bağlı hesaplar'a tıklayın.
- Git tümleştirmesi'nin altında Git sağlayıcısı için GitHub'ı seçin.
- Kişisel erişim belirteci'ne tıklayın.
- Git sağlayıcısı kullanıcı adı veya e-postası için GitHub kullanıcı adınızı girin.
- 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.
- Kaydet'e tıklayın.
1.2. Adım: GitHub deponuza bağlanma
- Çalışma alanı kenar çubuğunda Çalışma Alanı'na tıklayın.
- Çalışma Alanı tarayıcısında Çalışma Alanı Kullanıcıları'nı >genişletin.
- Kullanıcı adı klasörünüze sağ tıklayın ve git klasörü oluştur'a > tıklayın.
- Git klasörü oluştur iletişim kutusunda:
- Git deposu URL'si için GitHub deponuzun HTTPS URL'si ile GitHub Kopyası'nı girin. Bu makalede, URL'nizin ile
best-notebooks.git
sona erdiğini varsayar, örneğinhttps://github.com/<your-GitHub-username>/best-notebooks.git
. - Git sağlayıcısı için GitHub'ı seçin.
- Git klasörü adını deponuzun adına ayarlanmış olarak bırakın, örneğin
best-notebooks
. - Git klasörü oluştur'a tıklayın.
- Git deposu URL'si için GitHub deponuzun HTTPS URL'si ile GitHub Kopyası'nı girin. Bu makalede, URL'nizin ile
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.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.
Ç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.
En iyi not defterleri iletişim kutusunda Dal oluştur düğmesine tıklayın.
Not
Deponuzun dışında bir adı
best-notebooks
varsa, bu iletişim kutusunun başlığı burada ve bu kılavuz boyunca farklı olacaktır.yazın
eda
ve Oluştur'a tıklayın.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ı.
- En iyi not defterleri Git klasöründe Klasör Oluştur'a > tıklayın.
- Yeni klasör iletişim kutusunda yazın
notebooks
ve Oluştur'a tıklayın. - Not defterleri klasöründe kebap ve ardından İçeri Aktar'a tıklayın.
- İçeri Aktar iletişim kutusunda:
İçeri aktarma kaynağı için URL'yi seçin.
GitHub'daki depoda not defterinin
covid_eda_raw
ham içeriğinin URL'sinidatabricks/notebook-best-practices
girin. Bu URL'yi almak için: i. Şuraya git: https://github.com/databricks/notebook-best-practices . ii. Klasörenotebooks
tıklayın. iii. Dosyayacovid_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.
İçe aktar'a tıklayın.
2.3. Adım: Not defterini çalıştırma
- 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.
- Bu not defterinin eklenmesi için kümeyi seçin. Küme oluşturma yönergeleri için bkz . Küme oluşturma.
- Tümünü Çalıştır'a tıklayın.
- 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.
- Not defterinin adının yanındaki eda Git dal düğmesine tıklayın.
- 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.
- İşleme iletisi (gerekli) için girin
Added raw notebook
. - Açıklama (isteğe bağlı) için
This is the first version of the notebook.
- İşleme ve Gönderme'ye tıklayın.
- 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.
- GitHub'da çekme isteğini oluşturun ve ardından çekme isteğini dalla birleştirin
main
. - 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
- Not defterinin adının yanındaki eda Git dal düğmesine tıklayın.
- En iyi not defterleri iletişim kutusunda, eda dalı yanındaki açılan oka tıklayın ve main'ı seçin.
- Çek düğmesine tıklayın. Çekme işlemine devam etmek isteyip istemediğiniz sorulursa Onayla'ya tıklayın.
- Dal Oluştur düğmesine tıklayın.
- yazın
first_modules
ve Oluştur'a tıklayın. (Dalınıza farklı bir ad verebilirsiniz.) - 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.
- Ç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.
- İçeri Aktar iletişim kutusunda:
İçeri aktarma kaynağı için URL'yi seçin.
GitHub'daki depoda not defterinin
covid_eda_modular
ham içeriğinin URL'sinidatabricks/notebook-best-practices
girin. Bu URL'yi almak için: i. Şuraya git: https://github.com/databricks/notebook-best-practices . ii. Klasörenotebooks
tıklayın. iii. Dosyayacovid_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.
İçe aktar'a tıklayın.
3.3. Adım: Not defterinin destekleyici paylaşılan kod işlevlerini ekleme
Ç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.
Yeni klasör iletişim kutusunda yazın
covid_analysis
ve Oluştur'a tıklayın.covid_analysis klasöründe Dosya Oluştur'a > tıklayın.
Yeni Dosya Adı iletişim kutusunda yazın
transforms.py
ve Dosya Oluştur'a tıklayın.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.
Ç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.
Yeni Dosya Adı iletişim kutusunda yazın
requirements.txt
ve Dosya Oluştur'a tıklayın.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
.
- Çalışma alanı tarayıcısından not defterleri klasörünün içindeki covid_eda_modular not defterine tıklayın.
- Bu not defterinin eklenmesi için kümeyi seçin.
- Tümünü Çalıştır'a tıklayın.
- 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.
3.6. Adım: Not defterini ve ilgili kodunu iade edin
- Not defterinin adının yanındaki Git dalını first_modules düğmesine tıklayın.
- 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
- İşleme iletisi (gerekli) için girin
Added refactored notebook
. - Açıklama (isteğe bağlı) için
This is the second version of the notebook.
- İşleme ve Gönderme'ye tıklayın.
- 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.
- GitHub'da çekme isteğini oluşturun ve ardından çekme isteğini dalla birleştirin
main
. - 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
- Not defterinin adının yanındaki Git dalını first_modules düğmesine tıklayın.
- En iyi not defterleri iletişim kutusunda, first_modules dalın yanındaki açılan oka tıklayın ve main öğesini seçin.
- Çek düğmesine tıklayın. Çekme işlemine devam etmek isteyip istemediğiniz sorulursa Onayla'ya tıklayın.
- Dal Oluştur'a tıklayın.
- yazın
first_tests
ve Oluştur'a tıklayın. (Dalınıza farklı bir ad verebilirsiniz.) - 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.
Ç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.
Yeni klasör iletişim kutusunda yazın
tests
ve Oluştur'a tıklayın.Testler klasöründe Dosya Oluştur'a > tıklayın.
Yeni Dosya Adı iletişim kutusunda yazın
testdata.csv
ve Dosya Oluştur'a tıklayın.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
Testler klasöründe Dosya Oluştur'a > tıklayın.
Yeni Dosya Adı iletişim kutusunda yazın
transforms_test.py
ve Dosya Oluştur'a tıklayın.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.
- Ç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.
- Not Defterlerini İçeri Aktar iletişim kutusunda:
İçeri aktarma kaynağı için URL'yi seçin.
GitHub'daki depoda not defterinin
run_unit_tests
ham içeriğinin URL'sinidatabricks/notebook-best-practices
girin. Bu URL'yi almak için: i. Şuraya git: https://github.com/databricks/notebook-best-practices . ii. Klasörenotebooks
tıklayın. iii. Dosyayarun_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.
İçe aktar'a tıklayın.
- Bu not defterinin eklenmesi için kümeyi seçin.
- Tümünü Çalıştır'a tıklayın.
- 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
4.4. Adım: Not defterini ve ilgili testleri iade etme
- Not defterinin adının yanındaki Git dalını first_tests düğmesine tıklayın.
- 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
- İşleme iletisi (gerekli) için girin
Added tests
. - Açıklama (isteğe bağlı) için girin
These are the unit tests for the shared code.
. - İşleme ve Gönderme'ye tıklayın.
- 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.
- GitHub'da çekme isteğini oluşturun ve ardından çekme isteğini dalla birleştirin
main
. - 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
- Çalışma alanı kenar çubuğunda İş Akışları'na tıklayın.
- İşler sekmesinde İş Oluştur'a tıklayın.
- olacak
covid_report
işin adını düzenleyin. - Görev adı olarak girin
run_notebook_tests
. - Tür için Not Defteri'ni seçin.
- Kaynak olarak Git sağlayıcısı'ı seçin.
- Git başvurusu ekle'ye tıklayın.
- Git bilgileri iletişim kutusunda:
- Git deposu URL'si için GitHub deponuzun HTTPS URL'si ile GitHub Kopyası'nı girin. Bu makalede, URL'nizin ile
best-notebooks.git
sona erdiğini varsayar, örneğinhttps://github.com/<your-GitHub-username>/best-notebooks.git
. - Git sağlayıcısı için GitHub'ı seçin.
- Git başvurusu (dal / etiket / işleme) için girin
main
. - Git başvurusu (dal / etiket / işleme) öğesinin yanında dal'ı seçin.
- Onayla'yı tıklatın.
- Git deposu URL'si için GitHub deponuzun HTTPS URL'si ile GitHub Kopyası'nı girin. Bu makalede, URL'nizin ile
- Yol alanına girin
notebooks/run_unit_tests
. Dosya uzantısını eklemeyin.py
. - Küme için önceki adımdaki kümeyi seçin.
- 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
- + Görev ekle simgesine tıklayın.
- Bir açılır menü görüntülenir. Not defteri'ni seçin.
- Görev adı olarak girin
run_main_notebook
. - Tür için Not Defteri'ni seçin.
- Yol alanına girin
notebooks/covid_eda_modular
. Dosya uzantısını eklemeyin.py
. - Küme için önceki adımdaki kümeyi seçin.
- Değerin değerine bağlı olduğunu
run_notebook-tests
doğrulayın. - Görev oluştur'a tıklayın.
5.3. Adım İşi çalıştırma
Şimdi çalıştır üzerine tıklayın.
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:
- Veri Bilimi ve Mühendislik veya Databricks Mozaik AI ortamındaki kenar çubuğunda İş Akışları'na tıklayın.
- İş çalıştırmaları sekmesinde, İşler sütununda covid_report olan en son işin Başlangıç zamanı değerine tıklayın.
İş 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.
GitHub deponuzun web sitesinde Kod sekmesine tıklayın.
Dalları veya etiketleri değiştir açılan listesini genişletmek için main öğesinin yanındaki oka tıklayın.
Dal bul veya oluştur kutusuna yazın
adding_github_actions
.Dal oluştur'a tıklayın : 'main'dan adding_github_actions.
Dosya ekle Yeni dosya >oluştur'a tıklayın.
Dosyanızı adlandır için girin
.github/workflows/databricks_pull_request_tests.yml
.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"
Değişiklikleri işle'ye tıklayın.
Değişiklikleri işle iletişim kutusunda İşleme iletisine girin
Create databricks_pull_request_tests.yml
Doğrudan adding_github_actions dalda İşle'yi seçin ve Değişiklikleri işle'ye tıklayın.
Kod sekmesinde Karşılaştır & çekme isteği'ne tıklayın ve çekme isteğini oluşturun.
Ç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.
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
- Çalışma alanı tarayıcısından en iyi not defterleri Git klasörünü açın.
- Klasörün adının yanındaki Git dalını first_tests düğmesine tıklayın.
- En iyi not defterleri iletişim kutusunda, first_tests dalın yanındaki açılan oka tıklayın ve main öğesini seçin.
- Çek düğmesine tıklayın. Çekme işlemine devam etmek isteyip istemediğiniz sorulursa Onayla'ya tıklayın.
- + (Dal oluştur) düğmesine tıklayın.
- yazın
trigger_tests
ve Oluştur'a tıklayın. (Dalınıza farklı bir ad verebilirsiniz.) - Bu iletişim kutusunu kapatın.
7.2. Adım: Paylaşılan kodu değiştirme
Çalışma alanı tarayıcısından, en iyi not defterleri Git klasöründe covid_analysis/transforms.py dosyasına tıklayın.
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
- Dosya adının yanındaki Git dalını trigger_tests düğmesine tıklayın.
- En iyi not defterleri iletişim kutusundaki Değişiklikler sekmesinde covid_analysis/transforms.py seçildiğinden emin olun.
- İşleme iletisi (gerekli) için girin
Updated comment
. - Açıklama (isteğe bağlı) için
This updates the comment for filter_country.
- İşleme ve Gönderme'ye tıklayın.
- 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.
- Ç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.
- Yeşil onay işareti görünürse, çekme isteğini dalla birleştirin
main
.