Kód fejlesztése Databricks-jegyzetfüzetekben
Ez az oldal bemutatja, hogyan fejleszthet kódot a Databricks-jegyzetfüzetekben, beleértve az automatikus kiegészítést, a Python és az SQL automatikus formázását, a Python és az SQL jegyzetfüzetekben való kombinálását, valamint a jegyzetfüzet verzióelőzményeinek nyomon követését.
A szerkesztővel elérhető speciális funkciókról, például az automatikus kiegészítésről, a változók kiválasztásáról, a többkurzoros támogatásról és az egymás melletti diffekről további információt a Databricks-jegyzetfüzet és a fájlszerkesztő használata című témakörben talál.
Ha a jegyzetfüzetet vagy a fájlszerkesztőt használja, a Databricks Assistant segít a kód létrehozásában, magyarázatában és hibakeresésében. További információt a Databricks Assistant használata című témakörben talál.
A Databricks-jegyzetfüzetek beépített interaktív hibakeresőt is tartalmaznak Python-jegyzetfüzetekhez. Lásd: Jegyzetfüzetek hibakeresése.
Kódolási segítség kérése a Databricks Assistanttől
A Databricks Assistant egy környezettudatos AI-asszisztens, amellyel beszélgetési felületen kommunikálhat, így hatékonyabban dolgozhat a Databricksben. A feladat angol nyelven írható le, és hagyhatja, hogy az asszisztens Python-kódot vagy SQL-lekérdezéseket hozzon létre, ismertesse az összetett kódot, és automatikusan javítsa ki a hibákat. Az asszisztens a Unity Catalog metaadataival értelmezi a cégen belüli táblákat, oszlopokat, leírásokat és népszerű adategységeket, hogy személyre szabott válaszokat nyújtson.
A Databricks Assistant a következő feladatok elvégzésében tud segíteni:
- Kód létrehozása.
- Hibakeresési kód, beleértve a hibák azonosítását és javítását.
- Kód átalakítása és optimalizálása.
- Kód magyarázata.
- Segítség az Azure Databricks dokumentációjában található releváns információk megtalálásához.
A Databricks Assistant hatékonyabb kódhasználatáról a Databricks Assistant használata című témakörben olvashat. A Databricks Assistant szolgáltatással kapcsolatos általános információkért lásd a DatabricksIQ-alapú funkciókat.
Jegyzetfüzet elérése szerkesztéshez
Jegyzetfüzet megnyitásához használja a munkaterület Keresés funkcióját, vagy a munkaterület böngészője segítségével lépjen a jegyzetfüzetre, és kattintson a jegyzetfüzet nevére vagy ikonra.
Adatok tallózása
A sémaböngészővel megismerheti a jegyzetfüzethez elérhető Unity Catalog-objektumokat. Kattintson a jegyzetfüzet bal oldalán a sémaböngésző megnyitásához.
Az Ön számára gomb csak azokat az objektumokat jeleníti meg, amelyeket az aktuális munkamenetben használt vagy korábban kedvencként jelölt meg.
Amikor szöveget ír be a Szűrő mezőbe, a megjelenítés csak azokat az objektumokat jeleníti meg, amelyek a beírt szöveget tartalmazzák. Csak az aktuális munkamenetben megnyitott vagy megnyitott objektumok jelennek meg. A Szűrő mező nem végez teljes keresést a jegyzetfüzethez elérhető katalógusok, sémák, táblázatok és kötetek között.
A kebab menü megnyitásához vigye a kurzort az objektum nevére az alábbi módon:
Ha az objektum tábla, a következőket teheti:
- Automatikusan létrehozhat és futtathat egy cellát a táblázat adatainak előnézetének megjelenítéséhez. A táblázat kebab menüjében válassza az Előnézet lehetőséget egy új cellában .
- Katalógus, séma vagy tábla megtekintése a Katalóguskezelőben. Válassza a Megnyitás a Katalóguskezelőben lehetőséget a kebab menüben. Megnyílik egy új lap, amelyen a kijelölt objektum látható.
- Katalógus, séma vagy táblázat elérési útjának lekérése. Válassza a Másolás ... lehetőséget . útvonal az objektum kebab menüjéből.
- Táblázat hozzáadása a Kedvencekhez. Válassza a Hozzáadás a kedvencekhez lehetőséget a táblázat kebab menüjében.
Ha az objektum katalógus, séma vagy kötet, másolhatja az objektum elérési útját, vagy megnyithatja a Katalóguskezelőben.
Táblázat vagy oszlopnév beszúrása közvetlenül egy cellába:
- Kattintson a kurzorra a cellában azon a helyen, ahol be szeretné írni a nevet.
- Vigye a kurzort a sémaböngésző táblázat- vagy oszlopneve fölé.
- Kattintson az objektum nevének jobb oldalán megjelenő dupla nyílra .
Billentyűparancsok
A billentyűparancsok megjelenítéséhez válassza a Súgó > billentyűparancsok lehetőséget. Az elérhető billentyűparancsok attól függenek, hogy a kurzor kódcellában (szerkesztési módban) van-e vagy sem (parancsmód).
Parancskatalógus
A parancskatalógus használatával gyorsan végrehajthat műveleteket a jegyzetfüzetben. A jegyzetfüzetműveletek paneljének megnyitásához kattintson a munkaterület jobb alsó sarkára, vagy használja a MacOS-en a Cmd + Shift + P billentyűparancsot, Windowson pedig a Ctrl + Shift + P billentyűkombinációt.
Szöveg keresése és cseréje
A jegyzetfüzet szövegének megkereséséhez és cseréjéhez válassza a Keresés és csere szerkesztése lehetőséget>. Az aktuális egyezés narancssárga, az összes többi találat pedig sárga színnel van kiemelve.
Az aktuális egyezés cseréjéhez kattintson a Csere gombra. A jegyzetfüzet összes egyezésének cseréjéhez kattintson az Összes cseréje gombra.
Az egyezések közötti váltáshoz kattintson az Előző és a Tovább gombra. A shift+enter billentyűkombinációt lenyomva az előző és a következő egyezésre léphet.
A keresőeszköz bezárásához kattintson vagy nyomja le az esc billentyűt.
Kijelölt cellák futtatása
Egyetlen cellát vagy cellagyűjteményt is futtathat. Ha egyetlen cellát szeretne kijelölni, kattintson a cella tetszőleges pontjára. Ha több cellát szeretne kijelölni, tartsa lenyomva a Command
macos vagy a Ctrl
windowsos kulcsot, és kattintson a szövegterületen kívüli cellára a képernyőfelvételen látható módon.
A kijelölt parancs futtatásához a parancs viselkedése attól a fürttől függ, amelyhez a jegyzetfüzet csatlakoztatva van.
- A Databricks Runtime 13.3 LTS-t vagy újabb verziót futtató fürtöken a kijelölt cellák egyenként lesznek végrehajtva. Ha hiba történik egy cellában, a végrehajtás a következő cellákkal folytatódik.
- A Databricks Runtime 14.0-s vagy újabb verzióját futtató fürtöken vagy SQL-raktárban a kijelölt cellák kötegként lesznek végrehajtva. Minden hiba leállítja a végrehajtást, és nem szakíthatja meg az egyes cellák végrehajtását. A Megszakítás gombbal leállíthatja az összes cella végrehajtását.
Kód modularizálása
Fontos
Ez a funkció a nyilvános előzetes verzióban érhető el.
A Databricks Runtime 11.3 LTS és újabb verziók segítségével létrehozhat és kezelhet forráskódfájlokat az Azure Databricks-munkaterületen, majd szükség szerint importálhatja ezeket a fájlokat a jegyzetfüzeteibe.
A forráskódfájlok használatával kapcsolatos további információkért lásd : Kód megosztása a Databricks-jegyzetfüzetek és a Python- és R-modulok között.
Kijelölt szöveg futtatása
A jegyzetfüzetcellákban kiemelheti a kódot vagy az SQL-utasításokat, és csak ezt a kijelölést futtathatja. Ez akkor hasznos, ha gyorsan szeretné iterálni a kódot és a lekérdezéseket.
Jelölje ki a futtatni kívánt sorokat.
Válassza a Kijelölt szöveg futtatása parancsot>, vagy használja a billentyűparancsot
Ctrl
Shift
Enter
++. Ha nincs kijelölve szöveg, a kijelölt szöveg futtatása végrehajtja az aktuális sort.
Ha vegyes nyelveket használ egy cellában, a kijelölésbe bele kell foglalnia a %<language>
sort.
A kijelölt szöveg futtatása az összecsukott kódot is végrehajtja, ha van ilyen a kiemelt kijelölésben.
Speciális cellaparancsok, például %run
: , %pip
és %sh
támogatottak.
A kijelölt szöveg futtatása nem használható több kimeneti fület tartalmazó cellákon (vagyis olyan cellákon, amelyekben adatprofilt vagy vizualizációt definiált).
Kódcellák formázása
Az Azure Databricks olyan eszközöket biztosít, amelyekkel gyorsan és egyszerűen formázhatja a Python- és SQL-kódot a jegyzetfüzetcellákban. Ezek az eszközök csökkentik a kód formázásának megőrzésére és a jegyzetfüzetek ugyanazon kódolási szabványainak érvényesítésére irányuló erőfeszítéseket.
Python black formatter library
Fontos
Ez a funkció a nyilvános előzetes verzióban érhető el.
Az Azure Databricks támogatja a Python-kódformázást fekete használatával a jegyzetfüzetben. A jegyzetfüzetet egy olyan fürthöz kell csatolni, amelyen black
telepítve vannak a tokenize-rt
Python-csomagok.
A Databricks Runtime 11.3 LTS-en és újabb verziókon az Azure Databricks előtelepíti black
és tokenize-rt
. A formátumolót közvetlenül anélkül használhatja, hogy telepítenie kellene ezeket a kódtárakat.
A Databricks Runtime 10.4 LTS-en és alatta a Python-formázó használatához telepítenie black==22.3.0
kell a tokenize-rt==4.2.1
PyPI-t a jegyzetfüzetre vagy a fürtre. A jegyzetfüzetben a következő parancsot futtathatja:
%pip install black==22.3.0 tokenize-rt==4.2.1
vagy telepítse a tárat a fürtre.
A kódtárak telepítésével kapcsolatos további részletekért lásd a Python környezetkezelését.
A Databricks Git-mappákban lévő fájlok és jegyzetfüzetek esetében a Python-formázó a fájl alapján pyproject.toml
konfigurálható. A funkció használatához hozzon létre egy pyproject.toml
fájlt a Git mappa gyökérkönyvtárában, és konfigurálja a Fekete konfigurációs formátum szerint. Szerkessze a fájl [tool.black] szakaszát. A konfiguráció akkor lesz alkalmazva, ha az adott Git-mappában lévő fájlokat és jegyzetfüzeteket formázza.
Python- és SQL-cellák formázása
A kód formázásához szerkesztési engedéllyel kell rendelkeznie a jegyzetfüzeten.
Az Azure Databricks a Gethue/sql-formatter kódtárat használja az SQL és a Python fekete kódformázójának formázásához.
A formázó a következő módokon aktiválható:
Egyetlen cella formázása
- Billentyűparancs: Nyomja le a Cmd+Shift+F billentyűkombinációt.
- Parancs helyi menüje:
- SQL-cella formázása: Válassza az SQL formázása lehetőséget egy SQL-cella parancskörnyezeti legördülő menüjében. Ez a menüpont csak az SQL-jegyzetfüzetcellákban és a nyelvi varázslattal rendelkezőkben
%sql
látható. - Python-cella formázása: A Python-cella parancskörnyezeti legördülő menüjében válassza a Python formázása lehetőséget. Ez a menüelem csak a Python-jegyzetfüzetcellákban és a nyelvi varázslattal rendelkezőkben
%python
látható.
- SQL-cella formázása: Válassza az SQL formázása lehetőséget egy SQL-cella parancskörnyezeti legördülő menüjében. Ez a menüpont csak az SQL-jegyzetfüzetcellákban és a nyelvi varázslattal rendelkezőkben
- Jegyzetfüzet szerkesztése menü: Jelöljön ki egy Python- vagy SQL-cellát, majd válassza a Cella formázása szerkesztése > lehetőséget.
Több cella formázása
Jelöljön ki több cellát, majd válassza a Cella formázása szerkesztése > lehetőséget. Ha egynél több nyelv celláit választja ki, csak az SQL- és Python-cellák lesznek formázva. Ide tartoznak a használt
%sql
és%python
a .A jegyzetfüzet összes Python- és SQL-cellájának formázása
Válassza a Jegyzetfüzet formázásának szerkesztése lehetőséget>. Ha a jegyzetfüzet több nyelvet is tartalmaz, csak az SQL- és Python-cellák vannak formázva. Ide tartoznak a használt
%sql
és%python
a .
A kódformázás korlátozásai
- A Black a PEP 8 szabványt kényszeríti ki a 4 szóköz behúzására. A behúzás nem konfigurálható.
- Az SQL UDF-ben beágyazott Python-sztringek formázása nem támogatott. Hasonlóképpen, a Python UDF-ben lévő SQL-sztringek formázása nem támogatott.
Verzióelőzmények
Az Azure Databricks-jegyzetfüzetek megőrzik a jegyzetfüzetverziók előzményeit, így megtekintheti és visszaállíthatja a jegyzetfüzet korábbi pillanatképeit. A következő műveleteket hajthatja végre a verziókon: megjegyzések hozzáadása, verziók visszaállítása és törlése, valamint a verzióelőzmények törlése.
A Databricksben végzett munkát egy távoli Git-adattárral is szinkronizálhatja.
A jegyzetfüzet-verziók eléréséhez kattintson a jobb oldali oldalsávra. Megjelenik a jegyzetfüzet verzióelőzményei. A fájlverzió > előzményeit is kiválaszthatja.
Megjegyzés hozzáadása
Megjegyzés hozzáadása a legújabb verzióhoz:
Kattintson a verzióra.
Kattintson a Mentés gombra.
A Jegyzetfüzet verzió mentése párbeszédpanelen írjon be egy megjegyzést.
Kattintson a Mentés gombra. A jegyzetfüzet verziója a beírt megjegyzéssel együtt lesz mentve.
Verzió visszaállítása
Verzió visszaállítása:
Kattintson a verzióra.
Kattintson a Verzió visszaállítása gombra.
Kattintson a Megerősítés gombra. A kijelölt verzió lesz a jegyzetfüzet legújabb verziója.
Verzió törlése
Verzióbejegyzés törlése:
Kattintson a verzióra.
Kattintson a kuka ikonra .
Kattintson az Igen gombra , és törölje a elemet. A rendszer törli a kijelölt verziót az előzményekből.
Verzióelőzmények törlése
A verzióelőzmények nem állíthatók helyre a törlés után.
Jegyzetfüzet verzióelőzményeinek törlése:
- Válassza a Fájl > törlése verzióelőzményeket.
- Kattintson az Igen gombra, és törölje a jelet. A jegyzetfüzet verzióelőzményei törlődnek.
Kódnyelvek jegyzetfüzetekben
Alapértelmezett nyelv beállítása
A jegyzetfüzet alapértelmezett nyelve a jegyzetfüzet neve mellett jelenik meg.
Az alapértelmezett nyelv módosításához kattintson a nyelv gombra, és válassza ki az új nyelvet a legördülő menüből. Annak érdekében, hogy a meglévő parancsok továbbra is működjenek, az előző alapértelmezett nyelv parancsai automatikusan előtaggal lesznek elnevezve egy nyelvvarázslási paranccsal.
Nyelvek keverése
Alapértelmezés szerint a cellák a jegyzetfüzet alapértelmezett nyelvét használják. A cellában az alapértelmezett nyelvet felülbírálhatja a nyelv gombra kattintva, és kiválaszthat egy nyelvet a legördülő menüből.
Másik lehetőségként használhatja a nyelvvarázsló parancsot %<language>
a cella elején. A támogatott varázsparancsok a következők: %python
, %r
, %scala
és %sql
.
Feljegyzés
Nyelvvarázslási parancs meghívásakor a rendszer a parancsot a jegyzetfüzet végrehajtási környezetében küldi el a REPL-nek. Az egyik nyelven (és így az adott nyelvRE VONATKOZÓ REPL-ben) definiált változók nem érhetők el egy másik nyelv REPL-jében. Az REPL-ek csak külső erőforrásokon keresztül oszthatják meg az állapotokat, például a DBFS-ben lévő fájlokat vagy az objektumtárolóban lévő objektumokat.
A jegyzetfüzetek néhány kiegészítő varázsparancsot is támogatnak:
%sh
: Lehetővé teszi a rendszerhéjkód futtatását a jegyzetfüzetben. Ha a rendszerhéj-parancs nem nulla kilépési állapotú, akkor a cella sikertelenségéhez adja hozzá a-e
beállítást. Ez a parancs csak az Apache Spark-illesztőprogramon fut, a feldolgozókon nem. Ha egy rendszerhéjparancsot szeretne futtatni az összes csomóponton, használjon init-szkriptet.%fs
: Fájlrendszerparancsok használatátdbutils
teszi lehetővé. Ha például futtatni szeretné a parancsot adbutils.fs.ls
fájlok listázásához, megadhatja%fs ls
helyette. További információ: Fájlok használata az Azure Databricksben.%md
: Lehetővé teszi különböző típusú dokumentációk, például szöveg, képek, matematikai képletek és egyenletek hozzáadását. Lásd a következő szakaszt.
SQL-szintaxis kiemelése és automatikus kiegészítés a Python-parancsokban
A szintaxiskiemelés és az SQL automatikus kiegészítés akkor érhető el, ha az SQL-t Python-parancson belül használja, például egy spark.sql
parancsban.
SQL-cellaeredmények felfedezése Python-jegyzetfüzetekben a Python használatával
Előfordulhat, hogy az SQL használatával szeretne adatokat betölteni, és a Python használatával feltárni. Egy Databricks Python-jegyzetfüzetben a rendszer automatikusan elérhetővé teszi a változóhoz _sqldf
rendelt Python DataFrame-ként egy SQL-nyelvi cellából származó táblaeredményeket.
A Databricks Runtime 13.3 LTS-ben és újabb verziókban az IPython kimeneti gyorsítótárazási rendszerével is elérheti a DataFrame-eredményt. A parancssori számláló megjelenik a cellaeredmények alján megjelenő kimeneti üzenetben. A bemutatott példában az eredményre a következőként Out[2]
hivatkozhat: .
Feljegyzés
A változó
_sqldf
minden alkalommal újra hozzárendelhető, amikor egy%sql
cella fut. A DataFrame-eredményre való hivatkozás elvesztésének elkerülése érdekében rendelje hozzá egy új változónévhez a következő%sql
cella futtatása előtt:new_dataframe_name = _sqldf
Ha a lekérdezés egy widgetet használ a paraméterezéshez, az eredmények nem érhetők el Python DataFrame-ként.
Ha a lekérdezés a kulcsszavakat
CACHE TABLE
használja, vagyUNCACHE TABLE
az eredmények nem érhetők el Python DataFrame-ként.
A képernyőképen egy példa látható:
SQL-cellák végrehajtása párhuzamosan
Miközben egy parancs fut, és a jegyzetfüzet egy interaktív fürthöz van csatolva, az aktuális paranccsal egyidejűleg futtathat EGY SQL-cellát. Az SQL-cella végrehajtása egy új, párhuzamos munkamenetben történik.
Cella párhuzamos végrehajtása:
Kattintson a Futtatás most parancsra. A cella azonnal végrehajtásra kerül.
Mivel a cella egy új munkamenetben fut, az ideiglenes nézetek, az UDF-ek és az implicit Python DataFrame (_sqldf
) nem támogatottak a párhuzamosan végrehajtott cellák esetében. Emellett az alapértelmezett katalógus- és adatbázisnevek is használhatók a párhuzamos végrehajtás során. Ha a kód egy másik katalógusban vagy adatbázisban lévő táblára hivatkozik, háromszintű névtér (catalog
.schema
.table
) használatával kell megadnia a tábla nevét.
SQL-cellák végrehajtása SQL-raktáron
SQL-parancsokat futtathat egy Databricks-jegyzetfüzetben egy SQL-raktáron, amely az SQL Analyticsre optimalizált számítási típus. Lásd: Jegyzetfüzet használata SQL-raktárral.
Képek megjelenítése
Az Azure Databricks támogatja a képek Markdown-cellákban való megjelenítését. Megjelenítheti a munkaterületen, a kötetekben vagy a FileStore-ban tárolt képeket.
A munkaterületen tárolt képek megjelenítése
A munkaterületen tárolt képek megjelenítéséhez abszolút elérési utakat vagy relatív elérési utakat is használhat. A munkaterületen tárolt kép megjelenítéséhez használja az alábbi szintaxist:
%md
![my_test_image](/Workspace/absolute/path/to/image.png)
![my_test_image](./relative/path/to/image.png)
Kötetekben tárolt képek megjelenítése
A kötetekben tárolt képeket abszolút elérési utak használatával jelenítheti meg. Kötetekben tárolt kép megjelenítéséhez használja a következő szintaxist:
%md
![my_test_image](/Volumes/absolute/path/to/image.png)
A FileStore-ban tárolt képek megjelenítése
A FileStore-ban tárolt képek megjelenítéséhez használja az alábbi szintaxist:
%md
![my_test_image](files/image.png)
Tegyük fel például, hogy a Databricks-embléma képfájlja a FileStore-ban található:
dbfs ls dbfs:/FileStore/
databricks-logo-mobile.png
Ha a következő kódot adja meg egy Markdown-cellában:
a rendszerkép a cellában jelenik meg:
Képek húzása és húzása
A képeket a helyi fájlrendszerből a Markdown-cellákba húzhatja. A rendszerkép fel lesz töltve az aktuális Munkaterület könyvtárba, és megjelenik a cellában.
Matematikai egyenletek megjelenítése
A jegyzetfüzetek támogatják a KaTeX-et matematikai képletek és egyenletek megjelenítéséhez. Például,
%md
\\(c = \\pm\\sqrt{a^2 + b^2} \\)
\\(A{_i}{_j}=B{_i}{_j}\\)
$$c = \\pm\\sqrt{a^2 + b^2}$$
\\[A{_i}{_j}=B{_i}{_j}\\]
a következő módon jelenik meg:
és
%md
\\( f(\beta)= -Y_t^T X_t \beta + \sum log( 1+{e}^{X_t\bullet\beta}) + \frac{1}{2}\delta^t S_t^{-1}\delta\\)
where \\(\delta=(\beta - \mu_{t-1})\\)
a következő módon jelenik meg:
HTML belefoglalása
A függvény displayHTML
használatával HTML-fájlokat is felvehet egy jegyzetfüzetbe. Ennek módját a jegyzetfüzetekben található HTML, D3 és SVG szemlélteti.
Feljegyzés
Az displayHTML
iframe a tartományból databricksusercontent.com
lesz kiszolgálva, és az iframe tesztkörnyezet tartalmazza az allow-same-origin
attribútumot. A databricksusercontent.com
címnek elérhetőnek kell lennie a böngészőből. Ha a vállalati hálózat letiltotta, hozzá kell adni egy engedélyezési listához.
Hivatkozás más jegyzetfüzetekre
A Markdown-cellákban lévő többi jegyzetfüzetre vagy mappára relatív elérési utak használatával hivatkozhat. Adja meg a href
horgonycímke attribútumát a relatív elérési útként, kezdve a $
Unix fájlrendszereivel, majd kövesse ugyanazt a mintát:
%md
<a href="$./myNotebook">Link to notebook in same folder as current notebook</a>
<a href="$../myFolder">Link to folder in parent folder of current notebook</a>
<a href="$./myFolder2/myNotebook2">Link to nested notebook</a>