Vzdálený vývoj pro Databricks

Důležité

Vzdálený vývoj je v beta verzi.

Funkce Databricks Remote Development umožňuje přístup k Pracovnímu prostoru a interaktivní spouštění úloh na výpočetní platformě Databricks z IDE prostředí pomocí SSH tunelu. Nastavení je jednoduché, eliminuje potřebu správy prostředí a udržuje veškerý kód a data v pracovním prostoru Databricks zabezpečená.

Požadavky

Pokud chcete používat vzdálený vývoj, musíte mít:

  • Mějte nainstalované rozhraní příkazového řádku Databricks verze 0.269 nebo vyšší na místním počítači a nakonfigurované ověřování. Viz Instalace.
  • Vyhrazený cluster pro jednoho uživatele se spuštěným Databricks Runtime 17.0 nebo novějším. Viz Přehled vyhrazených výpočetních prostředků. Navíc:
    • Musí být povolen katalog Unity.
    • Pokud existuje výpočetní politika, nesmí zakazovat provádění úloh.

Nastavení připojení SSH

Nejprve nastavte tunel SSH pomocí příkazu nastavení databricks ssh . Nahraďte <connection-name> názvem připojení, my-connectionnapříklad .

databricks ssh setup --name <connection-name>

Rozhraní příkazového řádku vás vyzve k výběru clusteru. Můžete také zadat jednu přímo pomocí --cluster <cluster-id>:

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

Poznámka:

Pro uživatele IntelliJ doporučuje Databricks přidat --auto-start-cluster=false do instalačního příkazu a spustit cluster ručně před připojením. Důvodem je to, že integrované vývojové prostředí JetBrains spouští všechny nakonfigurované clustery při spuštění, což může vést k neočekávaným poplatkům za výpočetní prostředky.

Připojení k Databricks

Dále se připojte k Databricks pomocí integrovaného vývojového prostředí nebo terminálu.

Připojení pomocí editoru Visual Studio Code nebo kurzoru

  1. Pro Visual Studio Code nainstalujte rozšíření SSH pro vzdálený přístup. Kurzor obsahuje vzdálené rozšíření SSH ve výchozím nastavení.

  2. V hlavní nabídce integrovaného vývojového prostředí klepněte na příkaz Zobrazit>paletu příkazů. Vyberte Remote-SSH: Nastavení. Případně můžete vybrat Předvolby: Otevřít uživatelská nastavení (JSON) a upravit settings.json ho přímo.

  3. V části Remote.SSH: Výchozí rozšíření (nebo remote.SSH.defaultExtensions v settings.json), přidat ms-Python.Python a ms-toolsai.jupyter.

    Pokud upravujete settings.json:

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

    Poznámka:

    Volitelně můžete zvýšit hodnotu Remote.SSH: Časový limit připojení (nebo remote.SSH.connectTimeout v settings.json) a tím se dále sníží pravděpodobnost chyb časového limitu. Výchozí časový limit je 360.

  4. Na paletě příkazů vyberte Remote-SSH: Připojit k hostiteli.

  5. V rozevíracím seznamu vyberte připojení, které jste nastavili v prvním kroku. Integrované vývojové prostředí se bude připojovat v novém okně.

Připojení pomocí prostředí IntelliJ IDEs

  1. Postupujte podle kurzu vzdáleného serveru a nastavte se.
  2. Na nové obrazovce připojení zadejte:
    • Uživatelské jméno: root
    • Host: <connection-name>

Připojení pomocí terminálu

ssh <connection-name>

Otevřené projekty

Po připojení použijte otevřít složku z palety příkazů a přejděte na /Workspace/Users/<your-username>.

Poznámka:

Soubory v /Workspace, /Volumes a /dbfs přetrvávají napříč restartováním clusteru. Soubory v /home, /roota další místní cesty jsou dočasné a ztraceny při restartování.

Spustit kód (Visual Studio Code nebo Cursor)

Pokud chcete spustit kód pomocí vzdáleného vývoje, musíte zajistit nastavení virtuálního prostředí Databricks. Toto prostředí zahrnuje všechny integrované knihovny DBR a výpočetně ohraničené knihovny.

  1. Spusťte echo $DATABRICKS_VIRTUAL_ENV z terminálu v integrovaném vývojovém prostředí (IDE).

    Příklad výstupu: /local_disk0/.ephemeral_nfs/envs/pythonEnv-xxx/bin/python

  2. Otevřete paletu příkazů a zvolte Python: Vybrat interpret. Vložte výstup z výše uvedeného.

  3. Otevřete nový terminál a virtuální prostředí by se mělo aktivovat automaticky.

  4. Pokud chcete spustit poznámkový blok Jupyter, ujistěte se, že je virtuální prostředí vybrané jako jádro. V pravém horním rohu poznámkového bloku klikněte na Vybrat jádro .

Python soubory a .ipynb poznámkové bloky je možné spouštět a ladit pomocí standardních rozšíření Python a Jupyter.

Správa závislostí Pythonu

Python závislosti je možné spravovat globálně na úrovni clusteru nebo v rámci jednotlivých projektů pomocí poznámkových bloků.

Nainstalujte závislosti prostřednictvím uživatelského rozhraní pracovního prostoru v části Výpočetní > knihovny. Ty přetrvávají i po restartu clusteru a jsou k dispozici v pythonEnv-xxx. Viz knihovny klastru.

nastavení poznámkového bloku specifického pro Project

Pro projektové závislosti spusťte notebook obsahující %pip install příkazy na začátku každé relace:

# 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 Příkazy zahrnují mantinely specifické pro Databricks a šíří závislosti do uzlů exekutoru Sparku. To umožňuje uživatelem definované funkce (UDF) s vlastními závislostmi.

Další příklady najdete v tématu Správa knihoven pomocí %pip příkazů.

Pokud se relace znovu připojí do 10 minut, nemusíte poznámkový blok znovu spouštět. To je možné konfigurovat pomocí -shutdown-delay konfigurace SSH.

Poznámka:

Několik relací SSH ve stejném clusteru sdílí jedno virtuální prostředí.

Omezení

Vzdálený vývoj Databricks má následující omezení:

  • Sdílené clustery s více uživateli a bezserverovými clustery se zatím nepodporují.
  • Rozšíření Databricks pro Visual Studio Code a vzdálený vývoj ještě není kompatibilní a nemělo by se používat společně.
  • Soubory upravované mimo /Workspacea /Volumes/dbfs při restartování clusteru se ztratí.
  • Pro každý cluster je povoleno maximálně 10 připojení SSH.
  • Neaktivní relace můžou být po jedné hodině ukončeny.

Rozdíly v poznámkových blocích Databricks

Při použití vzdáleného vývoje existují některé rozdíly v poznámkových blocích:

  • Soubory Pythonu nedefinují žádné globální objekty Databricks (například spark nebo dbutils). Je nutné je naimportovat explicitně pomocí from databricks.sdk.runtime import spark.
  • Pro ipynb notebooky jsou k dispozici tyto funkce:
    • Globální Databricks: display, displayHTML, dbutils, table, sql, udf, getArgument, sc, sqlContext, spark
    • %sql magický příkaz ke spouštění buněk SQL

Práce se zdrojovými poznámkovými bloky Pythonu:

  • Vyhledejte jupyter.interactiveWindow.cellMarker.codeRegex a nastavte ho na:

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

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

Řešení problémů

Tato část obsahuje informace o řešení běžných problémů.

Selhání nebo vypršení časového limitu připojení SSH

  • Ověřte, že cluster běží v uživatelském rozhraní pracovního prostoru.
  • Zkontrolujte, jestli je odchozí port 22 otevřený a povolený na vašem přenosném počítači, síti a síti VPN.
  • Zvyšte časový limit pro SSH Viz Připojení pomocí editoru Visual Studio Code nebo kurzoru.
  • V případě chyb neshod klíčů odstraňte ~/.databricks/ssh-tunnel-keys a znovu spusťte databricks ssh setup.
  • V případě chyb "Identifikace vzdáleného hostitele se změnila" zkontrolujte ~/.ssh/known_hosts soubor a odstraňte položky související s vaším clusterem.
  • Relace SSH mohou být ukončeny po 1 hodině a je možné vytvořit maximálně 10 připojení SSH pro jeden cluster. Viz Omezení.

Chyby ověřování CLI

  • Ověřte, že váš profil rozhraní příkazového řádku Databricks je platný pomocí databricks auth login.
  • Ověřte, že máte CAN MANAGE oprávnění ke clusteru.

Můj kód nefunguje

Po restartování clusteru se soubory zmizí nebo se resetuje prostředí.

  • Soubory v /Workspace, /Volumes a /dbfs připojených svazcích se zachovají napříč restartováním clusteru. Soubory v /home, /roota další místní cesty jsou dočasné a ztraceny při restartování.
  • Používejte správu knihovny clusteru pro trvalé závislosti. V případě potřeby automatizujte přeinstalace pomocí inicializačních skriptů. Viz Co jsou inicializační skripty?.

Instalace SSH selže na Windows (WSL)

Spusťte databricks ssh setup přímo na Windows, ne v rámci WSL. Instance nástroje VS Code Windows nemůže najít konfigurace SSH vytvořené na straně WSL.

časté otázky

Jak se vzdálený vývoj liší od Databricks Connect?

Databricks Connect umožňuje psát kód pomocí rozhraní Spark API a spouštět je vzdáleně na výpočetních prostředcích Databricks místo v místní relaci Sparku. Rozšíření Databricks Visual Studio Code používá Databricks Connect k zajištění integrovaného ladění uživatelského kódu v Databricks.

Vzdálený vývoj umožňuje přístup k pracovnímu prostoru z integrovaného vývojového prostředí a přesune celé vývojové prostředí do clusteru – Python, jádro a všechna spuštění běží v Databricks s úplným přístupem k prostředkům clusteru.

Jak je můj kód a data zabezpečená?

Veškerý kód běží v rámci vašeho cloudového VPC Databricks. Žádná data ani kód neopustí vaše zabezpečené prostředí. Provoz SSH je plně šifrovaný.

Které ides se podporují?

Visual Studio Code a kurzor jsou oficiálně podporovány. Jakékoli integrované vývojové prostředí s funkcemi SSH je kompatibilní, ale testují se pouze VS Code a Cursor.

Jsou všechny funkce poznámkového bloku Databricks dostupné v integrovaném vývojovém prostředí (IDE)?

Některé funkce, jako display(), dbutils a %sql, jsou k dispozici s omezeními nebo manuálním nastavením. Prohlédněte si rozdíly poznámkových bloků Databricks.

Spustí se cluster automaticky, když se připojím pomocí tunelu SSH?

Ano, ale pokud spuštění clusteru trvá déle, než je časový limit připojení, pokus o připojení selže. Chcete-li tomu zabránit, zvyšte hodnotu Remote.SSH: Časový limit připojení z palety příkazů (nebo remote.SSH.connectTimeout v settings.json) pro další snížení pravděpodobnosti chyb časového limitu.

Jak poznám, jestli je cluster spuštěný?

Přejděte do výpočetního prostředí v uživatelském rozhraní pracovního prostoru Databricks a zkontrolujte stav clusteru. Aby fungovalo připojení SSH, musí se u clusteru zobrazit Running.

Jak můžu odpojit relaci SSH/IDE?

Relaci můžete odpojit tak, že zavřete okno integrovaného vývojového prostředí (IDE), použijete možnost Odpojit v IDE, zavřete terminál SSH nebo spustíte příkaz exit v terminálu.

Jak zastavím cluster a vyhnem se poplatkům, když nepracuji?

Pokud chcete cluster okamžitě zastavit, ukončete ho z uživatelského rozhraní pracovního prostoru. V uživatelském rozhraní pracovního prostoru Databricks přejděte na Výpočetní prostředky , vyhledejte cluster a klikněte na Ukončit nebo Zastavit.

Nastavte v clusteru krátké zásady automatického ukončení z uživatelského rozhraní pracovního prostoru. Po odpojení SSH server počká na shutdown-delay dobu (výchozí: 10 minut), pak se použije časový limit nečinnosti clusteru.

Jak mám zpracovávat trvalé závislosti?

Po restartování clusteru dojde ke ztrátě závislostí nainstalovaných během relace. Pro požadavky a instalační skripty použijte trvalé úložiště (/Workspace/Users/<your-username>). Pro automatizaci používejte knihovny clusteru nebo inicializační skripty.

Jaké metody ověřování se podporují?

Ověřování používá rozhraní příkazového řádku Databricks a váš ~/.databrickscfg soubor profilů. Klíče SSH zpracovává Databricks Remote Development.

Můžu se z clusteru připojit k externím databázím nebo službám?

Ano, pokud vaše síť clusteru umožňuje odchozí připojení a máte potřebné knihovny.

Můžu použít další rozšíření IDE?

Většina rozšíření funguje při instalaci ve vzdálené relaci SSH v závislosti na integrovaném vývojovém prostředí a clusteru. Visual Studio Code ve výchozím nastavení nenainstaluje na vzdálené hostitele místní rozšíření. Můžete je ručně nainstalovat tak, že otevřete panel rozšíření a povolíte místní rozšíření na vzdáleném hostiteli. Visual Studio Code můžete také nakonfigurovat tak, aby vždy vzdáleně nainstalovala určitá rozšíření. Viz Připojení k Databricks.

Ano, správci pracovního prostoru musí povolit adresy URL tržišť rozšíření VS Code a Cursor. Místní počítače uživatelů musí mít také možnost přistupovat k internetu.