Praca z modułami python i R

W tym artykule opisano sposób używania ścieżek względnych do importowania niestandardowych modułów języka Python i R przechowywanych w plikach obszarów roboczych wraz z notesami usługi Databricks. Pliki obszarów roboczych mogą ułatwić ściślejsze cykle programowania, co pozwala na modularyzowanie kodu, konwertowanie poleceń %run na instrukcje importowania i refaktoryzowanie plików wheel języka Python do modułów współskładnikowych. Możesz również użyć wbudowanego terminalu internetowego usługi Databricks do przetestowania kodu.

Uwaga

W środowisku Databricks Runtime 14.0 lub nowszym domyślnym bieżącym katalogiem roboczym (CWD) wykonywanym lokalnie jest katalog zawierający notes lub skrypt. Jest to zmiana zachowania środowiska Databricks Runtime 13.3 LTS i poniżej. Zobacz Co to jest domyślny bieżący katalog roboczy?.

Importowanie modułów języka Python i języka R

Ważne

W środowisku Databricks Runtime 13.3 LTS lub nowszym katalogi dodane do języka Python sys.pathlub katalogi, które mają strukturę jako pakiety języka Python, są automatycznie dystrybuowane do wszystkich funkcji wykonawczych w klastrze. W środowisku Databricks Runtime 12.2 LTS i poniżej biblioteki dodane do sys.path elementu muszą być jawnie zainstalowane na funkcjach wykonawczych.

W środowisku Databricks Runtime 11.3 LTS i nowszym bieżący katalog roboczy notesu jest automatycznie dodawany do ścieżki języka Python. Jeśli używasz folderów Git, zostanie dodany katalog repozytorium głównego.

Aby zaimportować moduły z innego katalogu, należy dodać katalog zawierający moduł do folderu sys.path. Katalogi można określić przy użyciu ścieżki względnej, jak w poniższym przykładzie:

import sys
import os
sys.path.append(os.path.abspath('..'))

Funkcje są importowane z modułu przechowywanego w plikach obszaru roboczego tak samo jak z modułu zapisanego jako biblioteka klastra lub biblioteka o zakresie notesu:

Python

from sample import power
power.powerOfTwo(3)

R

source("sample.R")
power.powerOfTwo(3)

Ważne

Jeśli używasz import instrukcji, usługa Databricks jest zgodna z ustawionym pierwszeństwem, jeśli istnieje wiele bibliotek o tej samej nazwie. Zobacz Pierwszeństwo biblioteki języka Python.

Autoreload dla modułów języka Python

Jeśli edytujesz wiele plików podczas tworzenia kodu w języku Python, możesz użyć następujących poleceń w dowolnej komórce notesu lub pliku python, aby wymusić ponowne załadowanie wszystkich modułów:

%load_ext autoreload
%autoreload 2

Należy pamiętać, że automatyczne ładowanie działa tylko na sterowniku i nie ładuje ponownie kodu do funkcji wykonawczej funkcji zdefiniowanej przez użytkownika.

Refaktoryzacja kodu

Najlepszym rozwiązaniem w zakresie programowania kodu jest modułyzacja kodu, dzięki czemu można go łatwo użyć ponownie. Możesz utworzyć niestandardowe pliki języka Python z plikami obszaru roboczego i udostępnić kod w tych plikach notesowi przy użyciu instrukcji import .

Aby refaktoryzować kod notesu do plików wielokrotnego użytku:

  1. Utwórz nowy plik kodu źródłowego dla kodu.
  2. Dodaj instrukcje importowania języka Python do notesu, aby udostępnić kod w nowym pliku notesowi.

Migrowanie z %run poleceń

Jeśli używasz %run poleceń do tworzenia funkcji języka Python lub R zdefiniowanych w notesie dostępnym dla innego notesu lub instalujesz pliki niestandardowe w klastrze, rozważ dołączenie tych modułów niestandardowych .whl jako plików obszaru roboczego. W ten sposób można zachować synchronizację notesów i innych modułów kodu, zapewniając, że notes zawsze używa poprawnej wersji.

%run Polecenia umożliwiają dołączenie jednego notesu do innego i są często używane do udostępniania pomocniczego kodu w języku Python lub R notesowi. W tym przykładzie notes o nazwie power.py zawiera poniższy kod.

# 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)

Następnie można udostępnić funkcje w power.py innym notesie %run za pomocą polecenia :

# This notebook uses a %run command to access the code in "power.py".
%run ./power
n_to_mth(3, 4)

Za pomocą plików obszaru roboczego możesz bezpośrednio zaimportować moduł zawierający kod języka Python i uruchomić funkcję.

from power import n_to_mth
n_to_mth(3, 4)

Refaktoryzacja plików języka Python .whl do bibliotek względnych

Pliki niestandardowe .whl można zainstalować w klastrze, a następnie zaimportować je do notesu dołączonego do tego klastra. W przypadku kodu, który jest często aktualizowany, ten proces może być uciążliwy i podatny na błędy. Pliki obszaru roboczego umożliwiają przechowywanie tych plików języka Python w tym samym katalogu przy użyciu notesów korzystających z kodu, dzięki czemu notes zawsze używa poprawnej wersji.

Aby uzyskać więcej informacji na temat tworzenia pakietów projektów języka Python, zobacz ten samouczek.

Testowanie za pomocą terminalu internetowego usługi Azure Databricks

Za pomocą terminalu internetowego usługi Azure Databricks możesz przetestować modyfikacje kodu języka Python lub R bez konieczności importowania pliku do notesu i wykonywania notesu.

  1. Otwórz terminal internetowy.
  2. Przejdź do katalogu: cd /Workspace/Users/<path-to-directory>/.
  3. Uruchom plik Python lub R: python file_name.py lub Rscript file_name.r.