Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
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:
Databricks'in desteklediği git sağlayıcısına sahip bir uzak depo. Bu makalenin kılavuzunda GitHub kullanılır. Bu kılavuzda,
best-notebooksadlı bir GitHub deponuz olduğu varsayılır. (Deponuza farklı bir ad verebilirsiniz. Bunu yaparsanız, bu kılavuzdabest-notebooksdeğerini deponuzun adıyla değiştirin.) Henüz GitHub deponuz yoksa oluşturun.Not
Yeni bir depo oluşturursanız, depoyu en az bir dosyayla (örneğin bir
READMEdosya) 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 Azure Databricks genel 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 Azure Databricks job 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 integration altında, Git sağlayıcısı için GitHub öğesini seçin.
- Kişisel erişim belirteci'ne tıklayın.
- Git sağlayıcı kullanıcı adı veya e-posta için GitHub kullanıcı adınızı girin.
- 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.
- 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 ile Kopyala URL'sini girin. Bu makalede, URL'nizin
best-notebooks.gitile sona erdiğini varsayar, örneğinhttps://github.com/<your-GitHub-username>/best-notebooks.git. - Git sağlayıcısı için GitHub öğesini 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 ile Kopyala URL'sini girin. Bu makalede, URL'nizin
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.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.
best-notebooks iletişim kutusunda Create branch düğmesine tıklayın.
Not
Deponuzun adı
best-notebooksdışında bir şeyse, bu iletişim kutusunun başlığı burada ve tüm bu kılavuz boyunca farklı olacaktır.yazın
edave 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:
- 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ı.
- En iyi not defterleri Git klasöründe Klasör Oluştur'a > tıklayın.
-
Yeni klasör iletişim kutusunda yazın
notebooksve 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
covid_eda_rawdeposundakidatabricks/notebook-best-practicesnot 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ınnotebooks. ııı. Dosyayacovid_eda_raw.pytı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.
İç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 defterini eklemek 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.
- 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.
- 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
Added raw notebookgirin. -
Açıklama (isteğe bağlı) için
This is the first version of the notebook. - İşle ve Gönder'e 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 çekme isteğini
maindalına birleştirin. - 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
- Not defterinin adının yanındaki eda Git dal düğmesine tıklayın.
- best-notebooks iletişim kutusunda, eda dalı yanındaki açılır oka tıklayın ve main'i 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_modulesve 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
covid_eda_modulardeposundakidatabricks/notebook-best-practicesnot 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ınnotebooks. ııı. Dosyayacovid_eda_modular.pytı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.
İç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 best-notebooks Git klasörüne sağ tıklayın ve ardından Çok Düzeyli Klasör Oluştur'a tıklayın.
Yeni klasör iletişim kutusunda yazın
covid_analysisve 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.pyve 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 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.
Ç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.txtve Dosya Oluştur'a tıklayın.requirements.txt düzenleyicisi penceresinde aşağıdaki kodu girin:
Not
requirements.txtDosya 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.2Not
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.
- Ç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 defterini eklemek için kümeyi seçin.
- Tümünü Çalıştır'a tıklayın.
- 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.
3.6. Adım: Not defterini ve ilgili kodu kontrol edin
- Defterin adının yanındaki Git "first_modules" dalı 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
- notebooks/covid_eda_modular.py
-
İşleme iletisi (gerekli) için
Added refactored notebookgirin. -
Açıklama (isteğe bağlı) için
This is the second version of the notebook. - İşle ve Gönder'e 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 çekme isteğini
maindalına birleştirin. - 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
- Defterin adının yanındaki Git "first_modules" dalı düğmesine tıklayın.
- 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.
- Ç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_testsve 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 sonra Klasör Oluştur'a tıklayın. >
Yeni klasör iletişim kutusunda yazın
testsve 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.csvve 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.1Testler klasöründe Dosya Oluştur'a > tıklayın.
Yeni Dosya Adı iletişim kutusunda yazın
transforms_test.pyve Dosya Oluştur'a tıklayın.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.
Ç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
run_unit_testsdeposundakidatabricks/notebook-best-practicesnot 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ınnotebooks. ııı. Dosyayarun_unit_tests.pytı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.
İçe aktar'a tıklayın.
Tümünü Çalıştır'a tıklayın.
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
4.4. Adım: Defteri ve ilgili testleri kontrol etme
- Defterin adının yanındaki first_tests Git dalı 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:
- tests/transforms_test.py
- notebooks/run_unit_tests.py
- tests/testdata.csv
-
İşleme iletisi (gerekli) için
Added testsgirin. -
Açıklama (isteğe bağlı) için girin
These are the unit tests for the shared code.. - İşle ve Gönder'e 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 çekme isteğini
maindalına birleştirin. - 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
- Çalışma alanınızda
Kenar çubuğundaki İşler ve İşlem Hatları.
- Oluştur'a ve ardından İş'e tıklayın.
-
covid_reportolacak iş adını düzenleyin. - İ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.
-
Görev adını girin
run_notebook_tests. - Gerekirse, Tür açılır menüsünden Not Defteri'ni seçin.
- Kaynak olarak Git sağlayıcısı'ı seçin.
- Git referansı ekle'ye tıklayın.
-
Git bilgileri iletişim kutusunda:
-
Git deposu URL’si için, GitHub deponuzun HTTPS ile Kopyala URL'sini girin. Bu makalede, URL'nizin
best-notebooks.gitile sona erdiğini varsayar, örneğinhttps://github.com/<your-GitHub-username>/best-notebooks.git. - Git sağlayıcısı için GitHub öğesini seçin.
- Git referansı (dal / etiket / işleme) için
maingirin. - Git başvurusu (dal / etiket / işleme) yanında dal'ı seçin.
- Onayla'yı tıklatın.
-
Git deposu URL’si için, GitHub deponuzun HTTPS ile Kopyala URL'sini girin. Bu makalede, URL'nizin
- Yol için 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. Dizüstü Bilgisayar'ı seçin.
-
Görev adını girin
run_main_notebook. - Tür için Dizüstü Bilgisayar'ı seçin.
- Yol için girin
notebooks/covid_eda_modular. Dosya uzantısını eklemeyin.py. - Küme için önceki adımdaki kümeyi seçin.
-
Bağlı Olduğu değeri
run_notebook-testsolarak doğrulayın. - Görev oluştur'a tıklayın.
İşi çalıştırma adımı 5.3
Şimdi çalıştır üzerine tıklayın.
Açılır pencerede Çalıştırmayı görüntüle seçeneğine 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ş 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.
GitHub deponuzun web sitesinde Code sekmesine tıklayın.
main öğesinin yanındaki oka tıklayarak Dalları veya etiketleri değiştir açılan listesini genişletin.
Dal bul veya oluştur kutusuna
adding_github_actionsyazın.'main' dalından 'adding_github_actions' dalını oluştur'a tıklayın.
Dosya ekle Yeni dosya oluştur >'a tıklayın.
Dosyanıza isim verin şeklinde
.github/workflows/databricks_pull_request_tests.ymlgirin.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'- Azure Databricks
Değişiklikleri Uygula'ya tıklayın.
Değişiklikleri İşle iletişim kutusunda,
Create databricks_pull_request_tests.yml'i İşleme İletisi alanına girinCommit directly to the adding_github_actions dalını seçin ve Değişiklikleri İş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 talebini
maindalı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
- Ç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 first_tests adlı Git dalı düğmesine tıklayın.
- best-notebooks iletişim kutusunda, first_tests dalını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_testsve 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 trigger_tests Git dalı 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
Updated commentgirin. -
Açıklama (isteğe bağlı) için
This updates the comment for filter_country. - İşle ve Gönder'e tıklayın.
- 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.
- Ç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 talebini
maindalına birleştirin.