Databricks Uzaktan Geliştirme

Önemli

Uzaktan Geliştirme Beta sürümündedir.

Databricks Uzaktan Geliştirme, çalışma alanınıza erişmenize ve SSH tüneli kullanarak IDE'lerden Databricks işlem üzerindeki iş yüklerini etkileşimli olarak çalıştırmanıza olanak tanır. Kurulumu kolaydır, ortam yönetimi gereksinimini ortadan kaldırır ve databricks çalışma alanınızda tüm kodu ve verileri güvenli tutar.

Gereksinimler

Uzaktan Geliştirme'yi kullanmak için aşağıdakilere sahip olmanız gerekir:

  • Databricks CLI sürüm 0.269 veya üzeri yerel makinenizde yüklü ve kimlik doğrulaması yapılandırılmış. Bkz. Yükleme.
  • Databricks Runtime 17.0 veya üzerini çalıştıran ayrılmış (tek kullanıcılı) küme. Bkz. Ayrılmış işlem genel bakışı Ek olarak:
    • Unity Kataloğu etkinleştirilmelidir.
    • Bir hesaplama ilkesi varsa, işlerin yürütülmesine engel olmamalıdır.

SSH bağlantısını ayarlama

İlk olarak , databricks ssh kurulum komutunu kullanarak SSH tünelini ayarlayın. <connection-name> değerini bağlantının adıyla değiştirin, örneğin my-connection.

databricks ssh setup --name <connection-name>

CLI sizden bir küme seçmenizi ister. Doğrudan --cluster <cluster-id> ile de belirtebilirsiniz:

databricks ssh setup --name <connection-name> --cluster <cluster-id>

Uyarı

Databricks, IntelliJ kullanıcıları için kurulum komutuna --auto-start-cluster=false eklemenizi ve bağlanmadan önce kümeyi manuel olarak başlatmanızı önerir. Bunun nedeni JetBrains IDE'lerinin tüm yapılandırılmış kümeleri başlatması ve bu da beklenmeyen işlem ücretlerine neden olabilir.

Databricks'e bağlanma

Ardından, IDE veya terminal kullanarak Databricks'e bağlanın.

Visual Studio Code veya İmleç kullanarak bağlanma

  1. Visual Studio Code için Uzak SSH uzantısını yükleyin. İmleç varsayılan olarak bir uzaktan SSH uzantısı içerir.

  2. IDE ana menüsündeKomut Paletini> tıklayın. Uzak-SSH: Ayarlar'ı seçin. Alternatif olarak, Tercihler: Kullanıcı Ayarları'nı (JSON) açın seçeneğini seçerek doğrudan settings.json değiştirebilirsiniz.

  3. Remote.SSH: Varsayılan Uzantılar (veya remote.SSH.defaultExtensions içinde settings.json), ms-Python.Python ve ms-toolsai.jupyter ekleyin.

    Eğer settings.json değiştiriyorsanız:

    "remote.SSH.defaultExtensions": [
        "ms-Python.Python",
        "ms-toolsai.jupyter"
    ]
    

    Uyarı

    İsteğe bağlı olarak, zaman aşımı hatalarının olasılığını daha da azaltmak için Remote.SSH: Connect Timeout (veya remote.SSH.connectTimeout içinde settings.json) değerini artırın. Varsayılan zaman aşımı 360'tır.

  4. Komut Paleti'nde Uzak SSH: Konağa Bağlan'ı seçin.

  5. Açılan listeden, ilk adımda ayarladığınız bağlantıyı seçin. IDE yeni bir pencerede bağlanmaya devam eder.

IntelliJ IDE'lerini kullanarak bağlanma

  1. Ayarlamak için Uzak sunucu kılavuzunu izleyin.
  2. Yeni bağlantı ekranında şunu girin:
    • Kullanıcı adı: root
    • Konak: <connection-name>

Terminal kullanarak bağlanma

ssh <connection-name>

Projeleri açma

Bağlandıktan sonra, Komut Paleti'nden Klasör Aç'ı kullanın ve adresine /Workspace/Users/<your-username>gidin.

Uyarı

/Workspace, /Volumes ve /dbfs içindeki dosyalar, kümede yeniden başlatmalar sırasında kalıcı olur. , /homeve diğer yerel yollardaki /rootdosyalar kısa ömürlü olur ve yeniden başlatmada kaybolur.

Kodu çalıştır (Visual Studio Code veya Cursor)

Uzaktan Geliştirme kullanarak kod çalıştırmak için Databricks sanal ortamının ayarlandığından emin olmanız gerekir. Bu ortam, tüm yerleşik DBR kitaplıklarını ve hesaplama kapsamındaki kitaplıkları içerir.

  1. IDE içindeki bir terminalden çalıştırın echo $DATABRICKS_VIRTUAL_ENV .

    Örnek çıkış: /local_disk0/.ephemeral_nfs/envs/pythonEnv-xxx/bin/python

  2. Komut Paleti'ni açın ve Python: Yorumlayıcı seçin. Yukarıdaki çıkışı yapıştırın.

  3. Yeni bir terminal açtığınızda sanal ortam otomatik olarak etkinleştirilmelidir.

  4. Jupyter not defterini çalıştırmak için sanal ortamın çekirdek olarak seçildiğinden emin olun. Not defterinin sağ üst kısmındaki Çekirdek Seç'e tıklayın.

Python dosyaları ve .ipynb not defterleri standart Python ve Jupyter uzantıları kullanılarak çalıştırılabilir ve hata ayıklanabilir.

Python bağımlılıklarını yönetme

Python bağımlılıkları, genel olarak küme düzeyinde yönetilebilir veya not defterleri kullanılarak tek tek projeler kapsamında olabilir.

İşlem > Kitaplıkları altındaki çalışma alanı kullanıcı arabirimi aracılığıyla bağımlılıkları yükleyin. Bunlar, kümenin yeniden başlatılması sırasında kalıcıdır ve pythonEnv-xxx içinde kullanılabilir. Bkz. Küme kitaplıkları.

Projeye özel not defteri kurulumu

Proje kapsamlı bağımlılıklar için, her oturumun başında %pip install komutlar içeren bir not defteri açın:

# Install from pyproject.toml
%pip install .

# Install from a requirements file
%pip install -r requirements.txt

# Install a wheel from Volumes or Workspace
%pip install /Volumes/catalog/schema/volume/your_library.whl

%pip komutları, Databricks'e özgü korumaları içerir ve bağımlılıkları Spark yürütücü düğümlerine aktarır. Bu, özel bağımlılıklarla kullanıcı tanımlı işlevleri (UDF) etkinleştirir.

Daha fazla örnek için bkz. Kitaplıkları komutlarla %pip yönetme.

Oturum 10 dakika içinde yeniden bağlanırsa not defterini yeniden çalıştırmanız gerekmez. Bu, SSH yapılandırmanızda kullanılarak -shutdown-delay yapılandırılabilir.

Uyarı

Aynı kümedeki birden çok SSH oturumu bir sanal ortamı paylaşır.

Sınırlamalar

Databricks Uzaktan Geliştirme aşağıdaki sınırlamalara sahiptir:

  • Birden çok kullanıcılı ve sunucusuz paylaşılan kümeler henüz desteklenmemektedir.
  • Visual Studio Code ve Uzaktan Geliştirme için Databricks uzantısı henüz uyumlu değildir ve birlikte kullanılmamalıdır.
  • /Workspace, /Volumes ve /dbfs dışında düzenlenen dosyalar küme yeniden başlatıldığında kaybolur.
  • Küme başına en fazla 10 SSH bağlantısına izin verilir.
  • Etkin olmayan oturumlar 1 saatlik hareketsizlikten sonra sonlandırılabilir.

Databricks Not Defteri farklılıkları

Uzaktan Geliştirme kullanılırken not defterlerinde bazı farklılıklar vardır:

  • Python dosyaları herhangi bir Databricks globali (örneğin spark veya dbutils) tanımlamaz. Bunları from databricks.sdk.runtime import spark ile açıkça içeri aktarmanız gerekir.
  • ipynb not defterleri için şu özellikler kullanılabilir:
    • Databricks genel ayarları: display, displayHTML, dbutils, table, sql, udf, getArgument, sc, sqlContext, spark
    • %sql SQL hücrelerini çalıştırmak için sihirli komut

Python kaynağı "not defterleri" ile çalışmak için:

  • Öğesini arayın jupyter.interactiveWindow.cellMarker.codeRegex ve şu şekilde ayarlayın:

    ^# COMMAND ----------|^# Databricks notebook source|^(#\\s*%%|#\\s*\\<codecell\\>|#\\s*In\\[\\d*?\\]|#\\s*In\\[ \\])
    
  • Öğesini arayın jupyter.interactiveWindow.cellMarker.default ve şu şekilde ayarlayın:

    # COMMAND ----------
    

Sorun giderme

Bu bölüm, yaygın sorunları çözme hakkında bilgi içerir.

SSH bağlantısı başarısız oluyor veya zaman aşımına uğradı

  • Kümenin çalışma alanı kullanıcı arabiriminde çalıştığını doğrulayın.
  • Dizüstü bilgisayarınızda, ağınızda ve VPN'nizde giden bağlantı noktası 22'nin açık ve izin verilip verilmediğini denetleyin.
  • SSH zaman aşımını artırın. Bkz. Visual Studio Code veya İmleç kullanarak bağlanma.
  • Anahtar uyuşmazlığı hataları için ~/.databricks/ssh-tunnel-keys silin ve databricks ssh setup tekrar çalıştırın.
  • "Uzak konak belirlemesi değişti" hataları için, kümenizle ilgili dosya ve silme girdilerini denetleyin ~/.ssh/known_hosts .
  • SSH oturumları 1 saat sonra düşebilir ve tek bir kümeye 10'dan fazla SSH bağlantısı yapılamaz. Bkz. Sınırlamalar.

CLI kimlik doğrulaması hataları

  • Kullanarak databricks auth loginDatabricks CLI profilinizin geçerli olduğunu onaylayın.
  • CAN MANAGE Küme üzerinde izinlerinizin olduğunu onaylayın.

Kodum çalışmıyor

Küme yeniden başlatıldıktan sonra dosyalar kaybolur veya ortam sıfırlanır

  • /Workspace, /Volumes ve /dbfs bağlamalarındaki dosyalar, küme yeniden başlatmaları arasında kalıcılık gösterir. , /homeve diğer yerel yollardaki /rootdosyalar kısa ömürlü olur ve yeniden başlatmada kaybolur.
  • Kalıcı bağımlılıklar için küme kitaplığı yönetimini kullanın. Gerekirse init betiklerini kullanarak yeniden yüklemeleri otomatikleştirin. Bkz. Başlatma betikleri nedir?.

SSH kurulumu Windows (WSL) üzerinde başarısız oluyor

databricks ssh setup WSL içinde değil doğrudan Windows üzerinde çalıştırın. Windows VS Code örneği, WSL tarafında oluşturulan SSH yapılandırmalarını bulamıyor.

FAQ

Uzaktan Geliştirme ile Databricks Connect arasında ne fark vardır?

Databricks Connect, Spark API'lerini kullanarak kod yazmanızı ve bunları yerel Spark oturumu yerine Databricks işlem üzerinde uzaktan çalıştırmanızı sağlar. Databricks Visual Studio Code uzantısı, Databricks'te kullanıcı kodunda yerleşik hata ayıklama sağlamak için Databricks Connect'i kullanır.

Uzaktan Geliştirme, IDE'nizden çalışma alanına erişmenizi ve geliştirme ortamınızın tamamını kümeye taşımanızı sağlar. Python, çekirdek ve tüm yürütme işlemleri, kümeye tam erişimle Databricks üzerinde çalışır.

Kodum ve verilerim nasıl güvenli hale getirildi?

Tüm kodLar Databricks bulut VPC'nizde çalışır. Hiçbir veri veya kod güvenli ortamınızdan ayrılmaz. SSH trafiği tamamen şifrelenir.

Hangi IDE'ler desteklenir?

Visual Studio Code ve İmleç resmi olarak desteklenir. SSH özelliklerine sahip tüm IDE'ler uyumludur, ancak yalnızca VS Code ve İmleç test edilir.

Tüm Databricks not defteri özellikleri IDE'den kullanılabilir mi?

, display()ve dbutils gibi %sqlbazı özellikler sınırlamalar veya el ile kurulum ile kullanılabilir. Bkz. Databricks Not Defterleri farklılıkları.

SSH tünelini kullanarak bağlandığımda kümem otomatik olarak başlatılacak mı?

Evet, ancak kümenin başlatılması, bağlantı zaman aşımından daha uzun sürerse bağlantı girişimi başarısız olur. Bunu önlemek için, zaman aşımı hatalarının olasılığını daha da azaltmak amacıyla komut paletinden Remote.SSH: Bağlantı Zaman Aşımı değerini arttırın (veya remote.SSH.connectTimeout içinde settings.json).

Kümemin çalışıp çalışmadığını nasıl anlarım?

Databricks çalışma alanı kullanıcı arabiriminde İşlem'e gidin ve kümenin durumunu denetleyin. Kümede SSH bağlantısının çalışması için Çalışıyor gösterilmelidir.

SSH/IDE oturumumu nasıl kesebilirim?

IDE pencerenizi kapatarak, IDE'nizdeki Bağlantıyı Kes seçeneğini kullanarak, SSH terminalinizi kapatarak veya terminalde komutunu çalıştırarak oturumun exit bağlantısını kesebilirsiniz.

Çalışmadığım zamanlarda kümeyi nasıl durdururum ve ücretlerden nasıl kaçınebilirim?

Hemen durdurmak için çalışma alanı kullanıcı arabiriminden kümeyi sonlandırın. Databricks çalışma alanı kullanıcı arabiriminde İşlem'e gidin, kümenizi bulun ve Sonlandır veya Durdur'a tıklayın.

Çalışma alanı kullanıcı arabiriminden kümenizde kısa bir otomatik sonlandırma ilkesi ayarlayın. Bağlantıyı kestikten sonra SSH sunucusu süreyi bekler shutdown-delay (varsayılan: 10 dakika), ardından kümenin boşta kalma zaman aşımı uygulanır.

Kalıcı bağımlılıkları nasıl işlemem gerekir?

Bir oturum sırasında yüklenen bağımlılıklar küme yeniden başlatıldıktan sonra kaybolur. Gereksinimler ve kurulum betikleri için kalıcı depolama (/Workspace/Users/<your-username>) kullanın. Otomasyon için küme kitaplıklarını veya başlatma betiklerini kullanın.

Hangi kimlik doğrulama yöntemleri desteklenir?

Kimlik doğrulaması Databricks CLI'sini ve profil dosyanızı ~/.databrickscfg kullanır. SSH anahtarları Databrick Uzaktan Geliştirme tarafından işlenir.

Kümeden dış veritabanlarına veya hizmetlere bağlanabilir miyim?

Evet, küme ağınız giden bağlantılara izin verdiği ve gerekli kitaplıklara sahip olduğunuz sürece.

Ek IDE uzantıları kullanabilir miyim?

Uzantıların çoğu, IDE'nize ve kümenize bağlı olarak uzak SSH oturumunuz içinde yüklendiğinde çalışır. Visual Studio Code varsayılan olarak uzak konaklara yerel uzantılar yüklemez. Uzantılar panelini açıp uzak konakta yerel uzantılarınızı etkinleştirerek bunları el ile yükleyebilirsiniz. Ayrıca Visual Studio Code'u her zaman belirli uzantıları uzaktan yükleyecek şekilde yapılandırabilirsiniz. Bkz . Databricks'e bağlanma.

Evet, ancak çalışma alanı yöneticileri VS Code ve İmleç uzantısı marketlerinin URL'lerine izin vermelidir. Kullanıcıların yerel makinelerinin de İnternet'e erişebilmesi gerekir.