Megosztás a következőn keresztül:


Python- és R-modulok használata

Ez a cikk azt ismerteti, hogyan importálhat relatív elérési utakat a munkaterületfájlokban tárolt egyéni Python- és R-modulok a Databricks-jegyzetfüzetek mellett. A munkaterület-fájlok megkönnyítik a fejlesztési életciklusok szűkösségét, lehetővé téve a kód modularizálását, a %run parancsok importálási utasításokká alakítását, valamint a Python-kerekes fájlok újrabontását közös verziójú modulokká. A kód teszteléséhez használhatja a beépített Databricks webes terminált is.

Feljegyzés

A Databricks Runtime 14.0-s vagy újabb verziójában a helyileg végrehajtott kód alapértelmezett aktuális munkakönyvtára (CWD) a futtatandó jegyzetfüzetet vagy szkriptet tartalmazó könyvtár. Ez a Databricks Runtime 13.3 LTS és az alábbi viselkedésbeli változás. Lásd : Mi az alapértelmezett aktuális munkakönyvtár?.

Python- és R-modulok importálása

Fontos

A Databricks Runtime 13.3 LTS-ben és újabb verziókban a Pythonhoz sys.pathhozzáadott könyvtárakat , vagy a Python-csomagokként strukturált könyvtárakat a rendszer automatikusan elosztja a fürt összes végrehajtója között. A Databricks Runtime 12.2 LTS-ben és az alábbi verziókban a sys.path hozzá hozzáadott kódtárakat kifejezetten telepíteni kell a végrehajtókra.

A Databricks Runtime 11.3 LTS és újabb verzióiban a jegyzetfüzet aktuális munkakönyvtára automatikusan bekerül a Python-elérési útra. Ha Git-mappákat használ, a rendszer hozzáadja a gyökértár könyvtárát.

Ha egy másik könyvtárból szeretne modulokat importálni, hozzá kell adnia a modult tartalmazó könyvtárat a könyvtárhoz sys.path. A könyvtárakat relatív elérési út használatával adhatja meg, ahogyan az alábbi példában is látható:

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

A függvényeket ugyanúgy importálja a munkaterületfájlokban tárolt modulból, mint egy fürttárként vagy jegyzetfüzet-hatókörű tárként mentett modulból:

Python

from sample import power
power.powerOfTwo(3)

R

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

Fontos

Ha egy utasítást import használ, és több azonos nevű kódtár létezik, a Databricks elsőbbséget élvező szabályokkal határozza meg, hogy melyik tárat kell betöltenie. Lásd a Python-kódtárak elsőbbségét.

Python-modulok automatikus betöltése

Ha több fájlt szerkeszt a Python-kód fejlesztése során, engedélyezheti, hogy a bővítmény automatikusan újra betöltse az autoreload importált modulokat, hogy a parancs futtassa ezeket a módosításokat. A bővítmény engedélyezéséhez használja a következő parancsokat bármelyik jegyzetfüzetcellában vagy Python-fájlban autoreload :

%load_ext autoreload
%autoreload 2

A autoreload bővítmény csak a Spark-illesztőprogram folyamatában működik, és nem tölt be kódot a Spark-végrehajtó folyamatokba. Mivel csak a Spark-illesztőprogram-csomóponton működik, és a Spark-végrehajtót futtató csomópontokon nem, nem ajánlott feldolgozó csomópontokon futó modulok (például UDF-ek) fejlesztésekor használni autoreload .

A Databricks Runtime 16.0-s és újabb verziókban a Databricks bővítménye autoreload a következő funkciókat adja hozzá:

  • Modulok célzott újratöltésének támogatása a függvények belső módosításához. Amikor csak lehetséges, a modul módosított részének újratöltése biztosítja, hogy minden objektumnak csak egy külsőleg látható példánya legyen, ami biztonságosabb és megbízhatóbb.
  • Amikor egy Python-modult egy munkaterületfájlból importál, a Databricks automatikusan javasolja a használatát autoreload , ha a modul az utolsó importálás óta megváltozott.

A bővítményről további információt az autoreload IPython automatikus betöltési dokumentációjában talál.

Kód újrabontása

A kódfejlesztés ajánlott eljárása a kód modularizálása, hogy könnyen újra felhasználható legyen. Létrehozhat egyéni Python-fájlokat munkaterületfájlokkal, és az utasítással elérhetővé teheti az ezekben a fájlokban lévő kódot egy import jegyzetfüzet számára.

Jegyzetfüzet-kód újrabontása újrafelhasználható fájlokba:

  1. Hozzon létre egy új forráskódfájlt a kódhoz.
  2. Adjon hozzá Python-importálási utasításokat a jegyzetfüzethez, hogy az új fájlban lévő kódot elérhetővé tegye a jegyzetfüzet számára.

Migrálás parancsokból %run

Ha %run parancsokkal teszi elérhetővé egy jegyzetfüzetben definiált Python- vagy R-függvényeket egy másik jegyzetfüzet számára, vagy egyéni .whl fájlokat telepít egy fürtre, fontolja meg az egyéni modulok munkaterületfájlokként való hozzáadását. Így szinkronizálhatja a jegyzetfüzeteket és más kódmodulokat, biztosítva, hogy a jegyzetfüzet mindig a megfelelő verziót használja.

%run parancsokkal felvehet egy jegyzetfüzetet egy másikba, és gyakran használják a támogató Python- vagy R-kódokat a jegyzetfüzetek számára. Ebben a példában egy elnevezett power.py jegyzetfüzet tartalmazza az alábbi kódot.

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

Ezután egy parancs használatával %run elérhetővé teheti a függvényeket power.py egy másik jegyzetfüzet számára:

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

Munkaterületfájlok használatával közvetlenül importálhatja a Python-kódot tartalmazó modult, és futtathatja a függvényt.

from power import n_to_mth
n_to_mth(3, 4)

Python-fájlok .whl újrabontása relatív kódtárakba

Egyéni .whl fájlokat telepíthet egy fürtre, majd importálhatja őket a fürthöz csatolt jegyzetfüzetbe. Ez a folyamat azonban nehézkes és hibalehetőséget jelenthet a gyakran frissített kód esetében. A munkaterületfájlok lehetővé teszik, hogy ezeket a Python-fájlokat ugyanabban a könyvtárban tartsa, mint a kódot használó jegyzetfüzetek, biztosítva, hogy a jegyzetfüzet mindig a megfelelő verziót használja.

A Python-projektek csomagolásáról ebben az oktatóanyagban talál további információt.

Az Azure Databricks webes termináljának használata teszteléshez

Az Azure Databricks webes terminállal anélkül tesztelheti a Python- vagy R-kód módosításait, hogy jegyzetfüzetet használna a fájl importálásához és futtatásához.

  1. Nyissa meg a webes terminált.
  2. Váltás a könyvtárra: cd /Workspace/Users/<path-to-directory>/.
  3. Futtassa a Python- vagy R-fájlt: python file_name.py vagy Rscript file_name.r.