Delen via


Werken met Python- en R-modules

In dit artikel wordt beschreven hoe u relatieve paden kunt gebruiken om aangepaste Python- en R-modules te importeren die zijn opgeslagen in werkruimtebestanden naast uw Databricks-notebooks. Werkruimtebestanden kunnen een strakkere ontwikkelingslevenscyclus vergemakkelijken, zodat u uw code kunt modulariseren, %run-opdrachten kunt converteren naar importinstructies en Python-wielbestanden kunt herstructureren naar co-versies van modules. U kunt ook de ingebouwde Databricks-webterminal gebruiken om uw code te testen.

Notitie

In Databricks Runtime 14.0 en hoger is de standaard huidige werkmap (CWD) voor lokaal uitgevoerde code de map met het notebook of script dat wordt uitgevoerd. Dit is een wijziging in gedrag van Databricks Runtime 13.3 LTS en hieronder. Zie Wat is de standaard huidige werkmap?

Python- en R-modules importeren

Belangrijk

In Databricks Runtime 13.3 LTS en hoger worden mappen die zijn toegevoegd aan python sys.pathof mappen die zijn gestructureerd als Python-pakketten, automatisch gedistribueerd naar alle uitvoerders in het cluster. In Databricks Runtime 12.2 LTS en hieronder moeten bibliotheken die aan de sys.path bibliotheek zijn toegevoegd, expliciet worden geïnstalleerd op uitvoerders.

In Databricks Runtime 11.3 LTS en hoger wordt de huidige werkmap van uw notebook automatisch toegevoegd aan het Python-pad. Als u Git-mappen gebruikt, wordt de map met de hoofdopslagplaats toegevoegd.

Als u modules uit een andere map wilt importeren, moet u de map met de module toevoegen aan sys.path. U kunt mappen opgeven met behulp van een relatief pad, zoals in het volgende voorbeeld:

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

U importeert functies uit een module die is opgeslagen in werkruimtebestanden, net zoals u dat zou doen vanuit een module die is opgeslagen als een clusterbibliotheek of notebook-scoped bibliotheek:

Python

from sample import power
power.powerOfTwo(3)

R

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

Belangrijk

Wanneer u een import instructie gebruikt, volgt Databricks een vaste prioriteit als er meerdere bibliotheken met dezelfde naam bestaan. Bekijk de prioriteit van de Python-bibliotheek.

Autoreload voor Python-modules

Als u meerdere bestanden bewerkt tijdens het ontwikkelen van Python-code, kunt u de volgende opdrachten in elke notebookcel of python-bestand gebruiken om een herlaadbewerking van alle modules af te dwingen:

%load_ext autoreload
%autoreload 2

Automatisch laden werkt alleen op het stuurprogramma en laadt geen code opnieuw in de uitvoerder voor UDF's.

Code herstructureren

Een best practice voor codeontwikkeling is het modulariseren van code, zodat deze eenvoudig opnieuw kan worden gebruikt. U kunt aangepaste Python-bestanden maken met werkruimtebestanden en de code in die bestanden beschikbaar maken voor een notebook met behulp van de import instructie.

Notitieblokcode herstructureren in herbruikbare bestanden:

  1. Maak een nieuw broncodebestand voor uw code.
  2. Voeg Python-importinstructies toe aan het notebook om de code in het nieuwe bestand beschikbaar te maken voor het notebook.

Migreren vanuit %run opdrachten

Als u opdrachten gebruikt %run om Python- of R-functies die zijn gedefinieerd in een notebook beschikbaar te maken voor een ander notebook of om aangepaste .whl bestanden op een cluster te installeren, kunt u overwegen om deze aangepaste modules als werkruimtebestanden op te nemen. Op deze manier kunt u uw notitieblokken en andere codemodules gesynchroniseerd houden, zodat uw notebook altijd de juiste versie gebruikt.

%run met opdrachten kunt u één notebook opnemen in een ander notitieblok en worden vaak gebruikt om ondersteunende Python- of R-code beschikbaar te maken voor een notebook. In dit voorbeeld bevat een notitieblok met de naam power.py de onderstaande code.

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

Vervolgens kunt u functies die zijn gedefinieerd in power.py een ander notitieblok beschikbaar maken met een %run opdracht:

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

Met werkruimtebestanden kunt u de module met de Python-code rechtstreeks importeren en de functie uitvoeren.

from power import n_to_mth
n_to_mth(3, 4)

Python-bestanden .whl herstructureren naar relatieve bibliotheken

U kunt aangepaste .whl bestanden op een cluster installeren en deze vervolgens importeren in een notebook dat aan dat cluster is gekoppeld. Voor code die regelmatig wordt bijgewerkt, kan dit proces lastig en foutgevoelig zijn. Met werkruimtebestanden kunt u deze Python-bestanden in dezelfde map bewaren met de notebooks die gebruikmaken van de code, zodat uw notebook altijd de juiste versie gebruikt.

Zie deze zelfstudie voor meer informatie over het verpakken van Python-projecten.

Azure Databricks-webterminal gebruiken voor testen

U kunt de Azure Databricks-webterminal gebruiken om wijzigingen in uw Python- of R-code te testen zonder het bestand te hoeven importeren in een notebook en het notebook uit te voeren.

  1. Open de webterminal.
  2. Ga naar de map: cd /Workspace/Users/<path-to-directory>/.
  3. Voer het Python- of R-bestand uit: python file_name.py of Rscript file_name.r.