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


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 jegyzetfüzet adatainak ikonja 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ü kebab menü megnyitásához vigye a kurzort az objektum nevére az alábbi módon:

kebab menü a sémaböngészőben

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:

  1. Kattintson a kurzorra a cellában azon a helyen, ahol be szeretné írni a nevet.
  2. Vigye a kurzort a sémaböngésző táblázat- vagy oszlopneve fölé.
  3. Kattintson az objektum nevének jobb oldalán megjelenő dupla nyílra dupla nyíl.

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.

parancskatalógus

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 Törlés ikon 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.

több cella kijelölése

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.

  1. Jelölje ki a futtatni kívánt sorokat.

  2. Válassza a Kijelölt szöveg futtatása parancsot>, vagy használja a billentyűparancsotCtrlShiftEnter++. Ha nincs kijelölve szöveg, a kijelölt szöveg futtatása végrehajtja az aktuális sort.

    kijelölt sorok futtatása

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ó.
    • 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 %pythona .

  • 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 %pythona .

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 verzióelőzmények ikon 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:

  1. Kattintson a verzióra.

  2. Kattintson a Mentés gombra.

    Megjegyzés mentése

  3. A Jegyzetfüzet verzió mentése párbeszédpanelen írjon be egy megjegyzést.

  4. 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:

  1. Kattintson a verzióra.

  2. Kattintson a Verzió visszaállítása gombra.

    Verzió visszaállítása

  3. 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:

  1. Kattintson a verzióra.

  2. Kattintson a kuka ikonra Kukába helyezés.

    Verzió törlése

  3. 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:

  1. Válassza a Fájl > törlése verzióelőzményeket.
  2. 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.

A jegyzetfüzet alapértelmezett nyelve

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.

Cellanyelv legördülő menü

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át dbutils teszi lehetővé. Ha például futtatni szeretné a parancsot a dbutils.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.

AZ SQL-cella eredményeinek felfedezése

Egy Databricks-jegyzetfüzetben egy SQL-nyelvi cellából származó eredmények automatikusan elérhetővé válnak a változóhoz _sqldfrendelt implicit DataFrame-ként. Ezt a változót ezután bármely olyan Python- és SQL-cellában használhatja, amelyet utána futtat, függetlenül attól, hogy milyen pozícióban van a jegyzetfüzetben.

Feljegyzés

Ez a funkció a következő korlátozásokkal rendelkezik:

  • A _sqldf változó nem érhető el olyan jegyzetfüzetekben, amelyek sql warehouse-t használnak a számításhoz.
  • A következő Python-cellák használata _sqldf a Databricks Runtime 13.3-ban és újabb verziókban támogatott.
  • A későbbi SQL-cellák használata _sqldf csak a Databricks Runtime 14.3-on és újabb verziókban támogatott.
  • Ha a lekérdezés a kulcsszavakat CACHE TABLE használja, vagy UNCACHE TABLEa _sqldf változó nem érhető el.

Az alábbi képernyőkép bemutatja, hogyan _sqldf használható a következő Python- és SQL-cellákban:

sql results dataframe

Fontos

A változó _sqldf minden alkalommal újra lesz rendelve, amikor egy SQL-cella fut. Egy adott 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:

Python

new_dataframe_name = _sqldf

SQL

ALTER VIEW _sqldf RENAME TO new_dataframe_name

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:

  1. Futtassa a cellát.

  2. Kattintson a Futtatás most parancsra. A cella azonnal végrehajtásra kerül.

    SQL-cella futtatása az aktuálisan futó cellával párhuzamosan

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ép beágyazása Markdown-cellába

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:

Kép a Markdown cellában

a rendszerkép a cellában jelenik meg:

Renderelt kép

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.

Kép húzása a Markdown cellába

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:

Renderelt egyenlet 1

é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:

Renderelt egyenlet 2

HTML belefoglalása

A függvény displayHTMLhaszná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.

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>