Práce s moduly Pythonu a R
Tento článek popisuje, jak můžete pomocí relativních cest importovat vlastní moduly Pythonu a R uložené v souborech pracovních prostorů spolu s poznámkovými bloky Databricks. Soubory pracovního prostoru můžou usnadnit přísnější životní cyklus vývoje, což umožňuje modularizovat kód, převést příkazy %run na příkazy importu a refaktorovat soubory kol Pythonu na moduly se spoluvlastní verzí. K otestování kódu můžete použít také integrovaný webový terminál Databricks.
Poznámka:
Ve službě Databricks Runtime 14.0 a vyšší je výchozí aktuální pracovní adresář (CWD) pro kód spuštěný místně, je adresář obsahující spuštěný poznámkový blok nebo skript. Jedná se o změnu chování z Databricks Runtime 13.3 LTS a níže. Podívejte se, co je výchozí aktuální pracovní adresář?
Import modulů Pythonu a R
Důležité
V Databricks Runtime 13.3 LTS a novějších se adresáře přidané do Pythonu sys.path
nebo adresářů strukturovaných jako balíčky Pythonu automaticky distribuují do všech exekutorů v clusteru. V Databricks Runtime 12.2 LTS a níže musí být knihovny přidané do sys.path
exekutorů explicitně nainstalované.
V Databricks Runtime 11.3 LTS a vyšších verzích se aktuální pracovní adresář poznámkového bloku automaticky přidá do cesty Pythonu. Pokud používáte složky Gitu, přidá se kořenový adresář úložiště.
Chcete-li importovat moduly z jiného adresáře, musíte přidat adresář obsahující modul do sys.path
. Adresáře můžete zadat pomocí relativní cesty, jak je znázorněno v následujícím příkladu:
import sys
import os
sys.path.append(os.path.abspath('..'))
Funkce z modulu uloženého v souborech pracovního prostoru importujete stejně jako z modulu uloženého jako knihovna clusteru nebo knihovna s oborem poznámkového bloku:
Python
from sample import power
power.powerOfTwo(3)
R
source("sample.R")
power.powerOfTwo(3)
Důležité
Pokud používáte import
příkaz a více knihoven se stejným názvem existuje, databricks používá pravidla priority k určení knihovny, která se má načíst. Viz priorita knihovny Pythonu.
Automatické načítání pro moduly Pythonu
Pokud upravujete více souborů při vývoji kódu Pythonu, můžete rozšíření povolit autoreload
, aby se všechny importované moduly automaticky načetly, aby se tyto úpravy spustily. K povolení rozšíření použijte následující příkazy v libovolné buňce poznámkového bloku nebo souboru Pythonu autoreload
:
%load_ext autoreload
%autoreload 2
Rozšíření autoreload
funguje pouze v procesu ovladače Sparku a nenačítá kód do procesů exekutoru Sparku. Protože funguje jenom na uzlu ovladače Sparku a ne na uzlech, na kterých běží exekutor Sparku, neměli byste používat autoreload
při vývoji modulů, které běží na pracovních uzlech (například UDF).
V Databricks Runtime 16.0 a novějších autoreload
přidá rozšíření v Databricks následující funkce:
- Podpora cíleného opětovného načítání modulů pro úpravy interních funkcí. Opětovným načtením pouze změněné části modulu kdykoli je to možné, zajistíte, že je k dispozici pouze jedna externě viditelná instance každého objektu, což je bezpečnější a spolehlivější.
- Když importujete modul Pythonu ze souboru pracovního prostoru, Databricks automaticky navrhne použití
autoreload
, pokud se modul od posledního importu změnil.
Další informace o autoreload
rozšíření najdete v dokumentaci k automatickému načítání IPythonu.
Refaktorování kódu
Osvědčeným postupem pro vývoj kódu je modularizovat kód, aby ho bylo možné snadno znovu použít. Pomocí příkazu můžete vytvořit vlastní soubory Pythonu se soubory pracovního prostoru a zpřístupnit kód v těchto souborech poznámkovému bloku import
.
Refaktoring kódu poznámkového bloku na opakovaně použitelné soubory:
- Vytvořte nový soubor zdrojového kódu pro váš kód.
- Přidejte do poznámkového bloku příkazy importu Pythonu, aby byl kód v novém souboru dostupný pro poznámkový blok.
Migrace z %run
příkazů
Pokud k %run
zpřístupnění funkcí Pythonu nebo R v poznámkovém bloku používáte příkazy nebo že instalujete vlastní .whl
soubory do clusteru, zvažte zahrnutí těchto vlastních modulů jako souborů pracovního prostoru. Díky tomu můžete poznámkové bloky a další moduly kódu synchronizovat a zajistit tak, aby váš poznámkový blok vždy používal správnou verzi.
%run
Příkazy umožňují zahrnout jeden poznámkový blok do druhého a často se používají k zpřístupnění podpůrného kódu Pythonu nebo jazyka R pro poznámkový blok. V tomto příkladu poznámkový blok s názvem power.py
obsahuje následující kód.
# 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)
Funkce definované v power.py
jiném poznámkovém bloku pak můžete zpřístupnit pomocí %run
příkazu:
# This notebook uses a %run command to access the code in "power.py".
%run ./power
n_to_mth(3, 4)
Pomocí souborů pracovního prostoru můžete přímo importovat modul, který obsahuje kód Pythonu, a spustit funkci.
from power import n_to_mth
n_to_mth(3, 4)
Refaktoring souborů Pythonu .whl
na relativní knihovny
Vlastní .whl
soubory můžete nainstalovat do clusteru a pak je importovat do poznámkového bloku připojeného k ho clusteru. Tento proces ale může být těžkopádný a náchylný k chybám pro často aktualizovaný kód. Soubory pracovního prostoru umožňují uchovávat tyto soubory Pythonu ve stejném adresáři jako poznámkové bloky, které používají kód, a zajistit tak, aby váš poznámkový blok vždy používal správnou verzi.
Další informace o balení projektů Pythonu najdete v tomto kurzu.
Použití webového terminálu Azure Databricks k testování
Webový terminál Azure Databricks můžete použít k otestování úprav kódu Pythonu nebo R bez použití poznámkového bloku k importu a spuštění souboru.
- Otevřete webový terminál.
- Přejděte do adresáře:
cd /Workspace/Users/<path-to-directory>/
. - Spusťte soubor Pythonu nebo R:
python file_name.py
neboRscript file_name.r
.