Python ve R modülleriyle çalışma
Bu makalede, Databricks not defterlerinizle birlikte çalışma alanı dosyalarında depolanan özel Python ve R modüllerini içeri aktarmak için göreli yolları nasıl kullanabileceğiniz açıklanmaktadır. Çalışma alanı dosyaları daha sıkı geliştirme yaşam döngülerini kolaylaştırarak kodunuzu modüler hale getirebilmenizi, %run komutlarını içeri aktarma deyimlerine dönüştürmenizi ve Python tekerlek dosyalarını birlikte sürümlenmiş modüllere yeniden düzenlemenizi sağlar. Kodunuzu test etmek için yerleşik Databricks web terminalini de kullanabilirsiniz.
Not
Databricks Runtime 14.0 ve üzerinde, yerel olarak yürütülen kod için varsayılan geçerli çalışma dizini (CWD), çalıştırılmakta olan not defterini veya betiği içeren dizindir. Bu, Databricks Runtime 13.3 LTS ve altındaki davranışlarda bir değişikliktir. Bkz. Varsayılan geçerli çalışma dizini nedir?.
Python ve R modüllerini içeri aktarma
Önemli
Databricks Runtime 13.3 LTS ve üzerinde Python 'a eklenen dizinler veya Python sys.path
paketleri olarak yapılandırılmış dizinler, kümedeki tüm yürütücülere otomatik olarak dağıtılır. Databricks Runtime 12.2 LTS ve altında, öğesine sys.path
eklenen kitaplıkların yürütücülere açıkça yüklenmesi gerekir.
Databricks Runtime 11.3 LTS ve üzerinde, not defterinizin geçerli çalışma dizini otomatik olarak Python yoluna eklenir. Git klasörleri kullanıyorsanız kök depo dizini eklenir.
Modülleri başka bir dizinden içeri aktarmak için modülünü içeren dizini öğesine sys.path
eklemeniz gerekir. Aşağıdaki örnekte olduğu gibi göreli yol kullanarak dizinleri belirtebilirsiniz:
import sys
import os
sys.path.append(os.path.abspath('..'))
Çalışma alanı dosyalarında depolanan bir modüldeki işlevleri, küme kitaplığı veya not defteri kapsamlı kitaplık olarak kaydedilmiş bir modülden yaptığınız gibi içeri aktarırsınız:
Python
from sample import power
power.powerOfTwo(3)
R
source("sample.R")
power.powerOfTwo(3)
Önemli
Bir import
deyim kullandığınızda ve aynı ada sahip birden çok kitaplık mevcut olduğunda, Databricks hangi kitaplığın yükleneceğini belirlemek için öncelik kurallarını kullanır. Bkz. Python kitaplığı önceliği.
Python modülleri için otomatik yükleme
Python kodu geliştirirken birden çok dosyayı düzenliyorsanız, uzantıyı autoreload
etkinleştirerek içeri aktarılan modülleri otomatik olarak yeniden yükleyerek komutun bu düzenlemeleri almasını sağlayabilirsiniz. Uzantıyı etkinleştirmek autoreload
için herhangi bir not defteri hücresinde veya Python dosyasında aşağıdaki komutları kullanın:
%load_ext autoreload
%autoreload 2
Uzantı autoreload
yalnızca Spark sürücü işleminde çalışır ve kodu Spark yürütücü işlemlerine yeniden yüklemez. Spark yürütücüsünü çalıştıran düğümlerde değil yalnızca Spark sürücü düğümünde çalıştığından, çalışan düğümlerinde çalışan modüller geliştirirken (örneğin UDF'ler) kullanmamalısınız autoreload
.
Databricks Runtime 16.0 ve üzeri sürümlerine autoreload
Databricks'teki uzantı aşağıdaki özellikleri ekler:
- İşlevler için dahili değişiklikler için modüllerin hedefli yeniden yüklenmesi desteği. Mümkün olduğunda modülün yalnızca değiştirilen kısmını yeniden yüklemek, her nesnenin yalnızca bir dış görünür örneği olmasını sağlar ve bu da daha güvenli ve daha güvenilirdir.
- Çalışma alanı dosyasından bir Python modülünü içeri aktardığınızda Databricks, modülün son içeri aktarma işleminden sonra değişip değişmediğini otomatik olarak kullanmayı
autoreload
önerir.
Uzantı hakkında autoreload
daha fazla bilgi edinmek için IPython otomatik yükleme belgelerine bakın.
Kodu yeniden düzenleme
Kod geliştirme için en iyi yöntem, kodu kolayca yeniden kullanılabilmesi için modüler hale getirmektir. Çalışma alanı dosyalarıyla özel Python dosyaları oluşturabilir ve deyimini kullanarak import
bu dosyalardaki kodu not defteri için kullanılabilir hale getirebilirsiniz.
Not defteri kodunu yeniden kullanılabilir dosyalar halinde yeniden düzenlemek için:
- Kodunuz için yeni bir kaynak kod dosyası oluşturun.
- Yeni dosyanızdaki kodu not defterinizde kullanılabilir hale getirmek için not defterine Python içeri aktarma deyimleri ekleyin.
Komutlardan %run
geçiş
Bir not defterinde tanımlanan Python veya R işlevlerini başka bir not defterinin kullanımına açmak için komutları kullanıyorsanız %run
veya bir kümeye özel .whl
dosyalar yüklüyorsanız, bu özel modülleri çalışma alanı dosyaları olarak eklemeyi göz önünde bulundurun. Bu şekilde not defterlerinizi ve diğer kod modüllerini eşitlenmiş olarak tutarak not defterinizin her zaman doğru sürümü kullanmasını sağlayabilirsiniz.
%run
komutları bir not defterini başka bir not defterine eklemenize olanak tanır ve genellikle python veya R kodunu destekleyen bir not defterinin kullanımına açmak için kullanılır. Bu örnekte, adlı power.py
not defteri aşağıdaki kodu içerir.
# This code is in a notebook named "power.py".
def n_to_mth(n,m):
print(n, "to the", m, "th power is", n**m)
Ardından, içinde tanımlanan power.py
işlevleri bir komutla %run
farklı bir not defteri için kullanılabilir hale getirebilirsiniz:
# This notebook uses a %run command to access the code in "power.py".
%run ./power
n_to_mth(3, 4)
Çalışma alanı dosyalarını kullanarak Python kodunu içeren modülü doğrudan içeri aktarabilir ve işlevini çalıştırabilirsiniz.
from power import n_to_mth
n_to_mth(3, 4)
Python .whl
dosyalarını göreli kitaplıklarda yeniden düzenleme
Özel .whl
dosyaları bir kümeye yükleyebilir ve sonra bunları bu kümeye bağlı bir not defterine aktarabilirsiniz. Ancak, bu işlem sık güncelleştirilen kod için hantal ve hataya eğilimli olabilir. Çalışma alanı dosyaları, bu Python dosyalarını kodu kullanan not defterleriyle aynı dizinde tutmanıza olanak sağlayarak not defterinizin her zaman doğru sürümü kullanmasını sağlar.
Python projelerini paketleme hakkında daha fazla bilgi için bu öğreticiye bakın.
Test için Azure Databricks web terminalini kullanma
Dosyayı içeri aktarmak ve çalıştırmak için not defteri kullanmadan Python veya R kodunuzda yapılan değişiklikleri test etmek için Azure Databricks web terminalini kullanabilirsiniz.
- Web terminalini açın.
- dizinine geçin:
cd /Workspace/Users/<path-to-directory>/
. - Python veya R dosyasını çalıştırın:
python file_name.py
veyaRscript file_name.r
.