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.

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ő táblákat és köteteket. 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 a táblákat 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 elemeket jeleníti meg, amelyek a beírt szöveget tartalmazzák. Csak az aktuális munkamenetben megnyitott vagy megnyitott elemek jelennek meg. A Szűrő mező nem végez teljes keresést a jegyzetfüzethez elérhető katalógusok, sémák és táblák között.

A Kebab menü kebab menü megnyitásához vigye a kurzort az elem nevére az alábbi módon:

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

Ha az elem táblázat, 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 elem 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 elem kebab menüjéből.
  • Táblázat hozzáadása a Kedvencekhez. Válassza a Táblázat hozzáadása a kedvencekhez lehetőséget a táblázat kebab menüjében.

Ha az elem katalógus, séma vagy kötet, másolhatja az elem 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 elem 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).

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.

Egyező szöveg

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ótlenyomva 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.

Változókezelő

Közvetlenül megfigyelheti a Python-, Scala- és R-változókat a jegyzetfüzet felhasználói felületén. A Databricks Runtime 12.1-es és újabb Verzióját futtató Python esetében a változók cellafuttatás közben frissülnek. A Scala, az R és a Python esetében a Databricks Runtime 12.0-s vagy újabb verzióban a változók a cella futása után frissülnek.

A változókezelő megnyitásához kattintson a változókezelő ikonjaa jobb oldali oldalsávra. Megnyílik a változókezelő, amely megjeleníti a jegyzetfüzetben jelenleg definiált változók értékét és adattípusát, beleértve az alakzatot is. (A PySpark-adatkeretek alakja "?", mivel az alakzat kiszámítása számításilag költséges lehet.)

A megjelenítés szűréséhez írjon be szöveget a keresőmezőbe. A rendszer gépelés közben automatikusan szűri a listát.

A változóértékek automatikusan frissülnek a jegyzetfüzetcellák futtatásakor.

példa változókezelő panel

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 cellák futtatásához válassza a Kijelölt cella(ok) futtatása parancsot>.

A parancs viselkedése attól függ, hogy a jegyzetfüzet melyik fürthöz van csatolva.

  • 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.2-s és újabb verziója lehetővé teszi forráskódfájlok létrehozását és kezelését az Azure Databricks-munkaterületen, majd szükség szerint importálhatja ezeket a fájlokat a jegyzetfüzetekbe.

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-cellák formázása

Fontos

Ez a funkció a nyilvános előzetes verzióban érhető el.

Az Azure Databricks támogatja a Python-kódformázást a jegyzetfüzeten belül a Black használatával. A jegyzetfüzetet egy olyan fürthöz kell csatolni, amelyen black telepítve vannak a tokenize-rt Python-csomagok, és a Fekete formázó azon a fürtön fut, amelyhez a jegyzetfüzet csatlakoztatva van.

A Databricks Runtime 11.2-ben és újabb verziókban 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 11.1 és újabb verziójában 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-adattárakban 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 az Adattár gyökérkönyvtárában, és konfigurálja azt a Fekete konfigurációs formátum szerint. Szerkessze a fájl [tool.black] szakaszát. A konfiguráció akkor lesz alkalmazva, ha az adattárban 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.

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 %sqllá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 %pythonlá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.

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 _sqldfrendelt Python DataFrame-ként egy SQL-nyelvi cellából származó táblaeredményeket.

A Databricks Runtime 13.0-s é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, vagy UNCACHE TABLEaz eredmények nem érhetők el Python DataFrame-ként.

A képernyőképen egy példa látható:

sql results dataframe

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 gombra. 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

Fontos

Ez a funkció a nyilvános előzetes verzióban érhető el.

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

A FileStore-ban tárolt képek megjelenítéséhez használja a következő szintaxist:

%md
![test](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

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>