Udostępnij za pośrednictwem


Zdalne programowanie Databricks

Ważne

Programowanie zdalne jest w wersji beta.

Usługa Databricks Remote Development ustanawia tunel SSH w celu połączenia środowiska IDE z obliczeniami usługi Databricks, zapewniając dostęp do obszaru roboczego usługi Databricks bezpośrednio z poziomu edytora. Konfiguracja jest prosta, umożliwia interaktywne uruchamianie i debugowanie kodu w klastrze, zmniejsza niezgodność środowiska i zapewnia bezpieczeństwo całego kodu i danych w obszarze roboczym usługi Databricks.

Requirements

Aby korzystać z programowania zdalnego, musisz mieć następujące elementy:

  • Databricks CLI w wersji 0.269 lub nowszej musi być zainstalowany na komputerze lokalnym, a uwierzytelnianie musi być skonfigurowane. Zobacz Instalowanie.
  • Jeśli używasz klasycznego środowiska obliczeniowego, musi to być tryb dostępu dedykowany (pojedynczy użytkownik). Zobacz Omówienie dedykowanego środowiska obliczeniowego. Dodatkowo:
    • Obliczenia muszą używać środowiska Databricks Runtime w wersji 17.0 lub nowszej.
    • Katalog Unity musi być włączony.
    • Jeśli istnieją zasady obliczeniowe, nie mogą uniemożliwiać wykonywania zadań.

Konfigurowanie tunelu SSH

Najpierw skonfiguruj tunel SSH przy użyciu komendy databricks ssh setup. Zastąp <connection-name> nazwą tunelu, na przykład my-tunnel.

databricks ssh setup --name <connection-name>

Interfejs wiersza polecenia prosi o wybranie klastra lub możesz przekazać identyfikator klastra za pomocą --cluster <cluster-id>.

Uwaga / Notatka

W przypadku środowiska IntelliJ Databricks zaleca uwzględnienie –-auto-start-cluster=false w poleceniu konfiguracji. Uruchamianie środowiska IDE JetBrains automatycznie uruchamia wszystkie klastry, co może spowodować niezamierzone koszty obliczeń. Jeśli ustawisz tę opcję, musisz uruchomić klaster w obszarze roboczym, aby uruchomić tunel SSH.

Nawiązywanie połączenia z usługą Databricks

Następnie połącz się z usługą Databricks przy użyciu środowiska IDE lub terminalu.

Nawiązywanie połączenia przy użyciu programu Visual Studio Code lub kursora

  1. W przypadku programu Visual Studio Code zainstaluj rozszerzenie Remote SSH. Kursor zawiera zdalne rozszerzenie SSH.

  2. W menu głównym środowiska IDE kliknij pozycję Wyświetl>paletę poleceń. Wybierz pozycję Remote-SSH: Settings (Zdalne połączenie SSH: ustawienia). Alternatywnie wybierz pozycję Preferencje: Otwórz ustawienia użytkownika (JSON), aby zmodyfikować settings.json je bezpośrednio.

  3. W sekcji Remote.SSH: Domyślne rozszerzenia (lub remote.SSH.defaultExtensions w systemie settings.json) dodaj ms-Python.Python i ms-toolsai.jupyter.

    W przypadku modyfikowania settings.jsonelementu :

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

    Uwaga / Notatka

    Opcjonalnie zwiększ wartość Remote.SSH: Limit czasu połączenia (lub remote.SSH.connectTimeout in settings.json), aby jeszcze bardziej zmniejszyć prawdopodobieństwo wystąpienia błędów przekroczenia limitu czasu. Domyślny limit czasu to 360.

  4. W palecie poleceń wybierz pozycję Remote-SSH: Połącz z hostem.

  5. Z listy rozwijanej wybierz tunel skonfigurowany w pierwszym kroku. Środowisko IDE przechodzi do nawiązywania połączenia w nowym oknie.

    Uwaga / Notatka

    Jeśli środowisko obliczeniowe nie jest uruchomione, zostanie ono uruchomione. Jeśli jednak uruchomienie obliczeń trwa dłużej niż limit czasu, próba połączenia SSH zakończy się niepowodzeniem.

  6. Po wyświetleniu monitu o typ serwera wybierz pozycję Linux .

Nawiązywanie połączenia przy użyciu środowiska IDE IntelliJ

  1. Postępuj zgodnie z samouczkiem dotyczącym programowania zdalnego , aby się skonfigurować.

  2. Na nowym ekranie połączenia wprowadź następujące informacje:

    Nazwa użytkownika: rootHost:<connection-name>

Nawiązywanie połączenia przy użyciu terminalu

Aby nawiązać połączenie z usługą Databricks z poziomu wiersza polecenia, podaj ssh nazwę połączenia, na przykład:

ssh my-tunnel

Otwieranie projektów

  1. Początkowe połączenie otwiera puste okno IDE bez otwartego folderu. W programie Visual Studio Code użyj polecenia Otwórz folder z palety poleceń , aby otworzyć żądany projekt.
  2. Użyj punktu montowania obszaru roboczego (/Workspace/Users/<your-username>) na potrzeby magazynu trwałego.

Uruchamianie kodu (Visual Studio Code)

  • Jeśli otworzysz projekt języka Python, rozszerzenie języka Python może automatycznie wykrywać środowiska wirtualne, ale nadal trzeba ręcznie aktywować odpowiednie. Wybierz polecenie Interpreter z palety poleceń i wybierz środowisko pythonEnv-xxx. Ma to dostęp do wszystkich wbudowanych bibliotek środowiska Databricks Runtime lub wszystkich elementów zainstalowanych globalnie w klastrze.
  • W niektórych przypadkach rozszerzenie języka Python nie może automatycznie wykrywać środowisk wirtualnych (venv), takich jak otwarcie folderu, którego nie można rozpoznać jako projektu języka Python. Aby rozwiązać ten problem, otwórz terminal i uruchom polecenie echo $DATABRICKS_VIRTUAL_ENV, a następnie skopiuj ścieżkę i użyj jej w poleceniu Python: Select Interpreter.

Po wybraniu venv pliki języka Python lub notesy mogą być wykonywane przy użyciu normalnych akcji uruchamiania lub debugowania udostępnianych przez rozszerzenia Języka Python lub Jupyter.

Zarządzanie zależnościami języka Python

Najprostszym sposobem instalowania wymaganych zależności jest użycie interfejsu użytkownika obszaru roboczego. Zobacz Biblioteki o zakresie obliczeniowym. Dzięki temu podejściu można instalować zależności globalnie dla klastra. Nie trzeba ponownie instalować bibliotek po każdym ponownym uruchomieniu klastra.

Jednak w przypadku bardziej programistycznej konfiguracji, która jest ograniczona do określonego projektu, należy użyć instalacji w zakresie notatnika.

Notatnik specyficzny dla konfiguracji projektu

Aby zarządzać zależnościami dla określonego projektu:

  1. setup.ipynb Utwórz plik w projekcie.

  2. CLI SSH tworzy środowisko języka Python (pythonEnv-xxx), które już zawiera wbudowane biblioteki Databricks Runtime lub biblioteki o zakresie obliczeniowym. Dołącz notatnik do tego pythonEnv-xxx środowiska.

  3. Użyj %pip install poleceń, aby zainstalować zależności:

    • %pip install . jeśli masz pyproject.toml (%pip install .<group> w celu zawężenia zakresu)
    • %pip install -r dependencies.txt jeśli masz dependencies.txt
    • %pip install /Volumes/your/wheel.whl (lub /Workspace ścieżki), jeśli utworzono i przekazano bibliotekę niestandardową jako koło

    %pip Polecenia mają logikę specyficzną dla Databricks, z dodatkowymi zabezpieczeniami. Logika zapewnia również, że zależności są dostępne dla wszystkich węzłów funkcji wykonawczej platformy Spark, a nie tylko węzła sterownika, z którym nawiązane połączenie. Umożliwia to korzystanie z funkcji zdefiniowanych przez użytkownika (UDF) z niestandardowymi zależnościami.

    Aby uzyskać więcej przykładów użycia, zobacz Zarządzanie bibliotekami za pomocą %pip poleceń.

Uruchom ten notes za każdym razem, gdy ustanawiasz nową sesję SSH. Nie trzeba ponownie instalować zależności, jeśli istniejąca sesja SSH została porzucona i ponownie połączona z klastrem w ciągu 10 minut. (Czas można skonfigurować za pomocą -shutdown-delay=10m opcji w lokalnej konfiguracji SSH).

Uwaga / Notatka

Jeśli masz wiele sesji SSH połączonych z tym samym klastrem w tym samym czasie, używają one tego samego środowiska wirtualnego.

Ograniczenia

Programowanie zdalne usługi Databricks ma następujące ograniczenia:

  • Rozszerzenie usługi Databricks dla programu Visual Studio Code i tunel SSH nie są jeszcze zgodne i nie powinny być używane razem.
  • Każdy folder Git utworzony w obszarze roboczym za pośrednictwem interfejsu użytkownika obszaru roboczego Databricks nie będzie rozpoznawany jako repozytorium Git przez interfejs wiersza polecenia Git i integracje IDE Git, ponieważ te foldery nie zawierają metadanych .git. Aby obejść ten problem, zobacz Jak używać usługi Git z programowaniem zdalnym?.
  • Instalacja główna i główna w klastrze, z którym nawiązujesz połączenie, są efemeryczne. Żadna zawartość klastra nie jest zachowywana po ponownym uruchomieniu klastra.

Różnice w notesach usługi Databricks

Podczas korzystania z programowania zdalnego istnieją pewne różnice w notesach:

  • Pliki języka Python nie definiują żadnych globalnych zmiennych Databricks (takich jak spark lub dbutils). Należy je jawnie zaimportować za pomocą polecenia from databricks.sdk.runtime import spark.
  • W przypadku notesów ipynb dostępne są następujące funkcje:
    • Globals usługi Databricks: display, displayHTML, dbutils, table, sql, udf, getArgument, sc, sqlContext, spark
    • %sql magiczne polecenie do uruchamiania komórek SQL

Aby pracować z notatnikami źródłowymi Pythona:

  • Wyszukaj jupyter.interactiveWindow.cellMarker.codeRegex i ustaw na:

    ^# COMMAND ----------|^# Databricks notebook source|^(#\\s*%%|#\\s*\\<codecell\\>|#\\s*In\\[\\d*?\\]|#\\s*In\\[ \\])
    
  • Wyszukaj jupyter.interactiveWindow.cellMarker.default i ustaw na:

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

Rozwiązywanie problemów

Ta sekcja zawiera informacje dotyczące rozwiązywania typowych problemów.

Połączenie SSH kończy się niepowodzeniem lub przekroczono limit czasu

  • Upewnij się, że klaster jest URUCHOMIONY w interfejsie użytkownika usługi Databricks, a nie tylko zatrzymany lub uruchamiany.
  • Sprawdź, czy port wychodzący 22 jest otwarty i dozwolony na laptopie/sieci/sieci VPN.
  • Zwiększ limit czasu połączenia SSH w środowisku IDE. Zobacz Nawiązywanie połączenia przy użyciu programu Visual Studio Code lub kursora.
  • Jeśli widzisz błędy niezgodności klucza publicznego lub prywatnego, spróbuj usunąć ~/.databricks/ssh-tunnel-keys folder.
  • Jeśli zostaną wyświetlone błędy "Identyfikacja hosta zdalnego uległa zmianie", sprawdź plik ~/.ssh/known_hosts i usuń wpisy powiązane z twoim klastrem.
  • Jeśli sesja SSH zostanie porzucona po 1 godzinie, jest to znane ograniczenie. Zobacz Ograniczenia.
  • W jednym klastrze nie może być więcej niż 10 połączeń SSH.

Błędy uwierzytelniania CLI

  • Upewnij się, że profil usługi Databricks w interfejsie wiersza polecenia jest prawidłowy i uwierzytelniony (databricks auth login).
  • Upewnij się, że masz odpowiednie uprawnienia klastra, takie jak CAN MANAGE.

Pliki znikają lub środowisko zostaje zresetowane po ponownym uruchomieniu klastra.

  • Tylko /Workspace, /Volumes i /dbfs punkty montowania są trwałe. Wszystkie dane w pliku /home, /rootitp. są usuwane po ponownym uruchomieniu.
  • Użyj zarządzania bibliotekami klastrów do zarządzania stałymi zależnościami. W razie potrzeby zautomatyzuj ponowne instalowanie za pomocą skryptów inicjowania. Zobacz Czym są skrypty init?.

Błąd "Nie repozytorium Git" lub brak funkcji Git w środowisku IDE

Narzędzie Git działa tylko w przypadku klonowania do /Workspace/Users/<your-username> przy użyciu terminala. Foldery utworzone w sieci Web nie mają metadanych git. Zobacz Jak używać usługi Git z programowaniem zdalnym?.

Mój kod nie działa

  • Upewnij się, że wybrano właściwy interpreter języka Python, który ma dostęp do wszystkich zależności środowiska Databricks Runtime.
    • Jeśli otworzysz projekt języka Python, rozszerzenie języka Python może automatycznie wykrywać środowiska wirtualne, ale nadal trzeba ręcznie aktywować odpowiednie. Wykonaj język Python: wybierz polecenie Interpreter i wybierz środowisko pythonEnv-xxx . Będzie on miał dostęp do wszystkich wbudowanych bibliotek środowiska Databricks Runtime lub dowolnych elementów zainstalowanych globalnie w klastrze.
    • W niektórych przypadkach rozszerzenie języka Python nie może automatycznie wykrywać środowisk wirtualnych, takich jak otwarcie folderu, którego nie można rozpoznać jako projektu języka Python. Możesz otworzyć terminal i wykonać echo $DATABRICKS_VIRTUAL_ENVpolecenie, a następnie skopiować ścieżkę i użyć jej w poleceniu Python: Select Interpreter.
  • Notesy IPYNB i *.py notatniki Databricks mają dostęp do zasobów globalnych Databricks, ale nie mają go pliki Python *.py. Zobacz Różnice w notesach usługi Databricks.

Nie można skonfigurować połączenia SSH w systemie Windows w programie WSL

Usługa Databricks zaleca przeprowadzanie instalacji protokołu SSH bezpośrednio w systemie Windows. Jeśli skonfigurujesz to po stronie WSL, ale uruchomisz Visual Studio Code w wersji dla Windows, nie znajdzie niezbędnych konfiguracji ssh.

Często zadawane pytania

Jak jest zabezpieczony mój kod i dane?

Cały kod jest uruchamiany w ramach wirtualnej prywatnej chmury Databricks (VPC). Żadne dane ani kod nie opuszcza bezpiecznego środowiska. Ruch SSH jest w pełni zaszyfrowany.

Które środowiska IDE są obsługiwane?

Program Visual Studio Code i kursor są oficjalnie obsługiwane, ale tunel SSH jest zgodny z dowolnym środowiskiem IDE z funkcjami SSH.

Czy wszystkie funkcje notesu Databricks są dostępne w środowisku IDE?

Niektóre funkcje, takie jak display(), dbutilsi %sql , są dostępne z ograniczeniami lub ręczną konfiguracją. Zobacz Różnice w notesach usługi Databricks.

Czy wielu użytkowników może jednocześnie tworzyć aplikacje w tym samym klastrze?

Nie.

Czy mój klaster zostanie uruchomiony automatycznie po nawiązaniu połączenia przy użyciu tunelu SSH?

Tak, ale jeśli uruchomienie klastra trwa dłużej niż przekroczenie limitu czasu połączenia, próba połączenia zakończy się niepowodzeniem.

Jak sprawdzić, czy mój klaster jest uruchomiony?

Przejdź do obszaru obliczeniowego w interfejsie użytkownika obszaru roboczego usługi Databricks i sprawdź stan klastra. Klaster musi wykazywać stan Uruchomione, aby połączenia tunelu SSH działały.

Jak rozłączyć sesję SSH/IDE?

Sesję można rozłączyć, zamykając okno ide, używając opcji Rozłącz w środowisku IDE, zamykając terminal SSH lub uruchamiając exit polecenie w terminalu.

Czy rozłączenie protokołu SSH powoduje automatyczne zatrzymanie klastra?

Nie, serwer SSH ma konfigurowalne opóźnienie zamykania i będzie nadal działać w tle przez określony czas (domyślnie 10m, można zmienić w konfiguracji SSH w opcji ProxyCommand, modyfikując opcję -shutdown-delay). Po upływie limitu czasu serwer zakończy działanie, co powoduje przekroczenie limitu czasu bezczynności klastra (który jest konfigurowany podczas tworzenia klastra).

Jak zatrzymać klaster, aby uniknąć niepotrzebnych opłat?

Przejdź do Compute w interfejsie użytkownika obszaru roboczego usługi Databricks, znajdź klaster i kliknij Zakończ lub Zatrzymaj.

Jak obsługiwać trwałe zależności?

Zależności zainstalowane podczas sesji zostaną utracone po ponownym uruchomieniu klastra. Użyj magazynu trwałego (/Workspace/Users/<your-username>) dla wymagań i skryptów konfiguracji. Użyj bibliotek klastra lub skryptów inicjowania na potrzeby automatyzacji.

Jakie metody uwierzytelniania są obsługiwane?

Uwierzytelnianie używa interfejsu wiersza polecenia (CLI) usługi Databricks i pliku profilów ~/.databrickscfg. Klucze SSH są obsługiwane przez zdalne zarządzanie Databricks.

Czy mogę nawiązać połączenie z zewnętrznymi bazami danych lub usługami z klastra?

Tak, o ile sieć klastra zezwala na połączenia wychodzące i masz niezbędne biblioteki.

Czy można używać dodatkowych rozszerzeń IDE?

Większość rozszerzeń działa w przypadku instalacji w ramach zdalnej sesji SSH, w zależności od środowiska IDE i klastra. Program Visual Studio Code domyślnie nie instaluje rozszerzeń lokalnych na hostach zdalnych. Można je zainstalować ręcznie, otwierając panel rozszerzeń i włączając rozszerzenia lokalne na hoście zdalnym. Można również skonfigurować program Visual Studio Code, aby zawsze zdalnie instalować pewne rozszerzenia. Zobacz Nawiązywanie połączenia z usługą Databricks.

Jak używać usługi Git z programowaniem zdalnym?

Obecnie foldery Git utworzone przy użyciu interfejsu użytkownika obszaru roboczego usługi Databricks nie są rozpoznawane jako repozytoria git w środowiskach IDE. Aby obejść ten problem, sklonuj repozytoria przy użyciu Git CLI z sesji SSH do folderu trwałej przestrzeni roboczej.

  1. Otwórz terminal i przejdź do żądanego katalogu nadrzędnego (na przykład cd /Workspace/Users/<your-username>)
  2. Sklonuj repozytorium w tym katalogu.
  3. W programie Visual Studio Code otwórz ten folder w nowym oknie, uruchamiając code <repo-name> lub otwierając folder w nowym oknie przy użyciu interfejsu użytkownika.