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 sávokról további információt a Navigálás a Databricks-jegyzetfüzetben és a fájlszerkesztőbencí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ód modularizálása

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.

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 fenntartására fordított erőfeszítéseket, és segítenek ugyanazon kódolási szabványok érvényesítésében a jegyzetfüzetekben.

Python Black formázó könyvtár

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, amelyre a black és a tokenize-rt Python-csomagok telepítve vannak.

A Databricks Runtime 11.3 LTS és az újabb verziók esetén 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 és alacsonyabb verziókon a Python-formázó használatához a black==22.3.0 és a tokenize-rt==4.2.1 csomagokat kell telepítenie a PyPI-ról a jegyzetfüzetedbe vagy a fürtödbe. A jegyzetfüzetben a következő parancsot futtathatja:

%pip install black==22.3.0 tokenize-rt==4.2.1

vagy telepítse a könyvtárat a(z) 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 pyproject.toml fájl alapján 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. Szerkeszd 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 jogosultsággal kell rendelkeznie a jegyzetfüzetben.

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 a SQL-cella parancskörnyezeti legördülő menüjében a „ SQL formázása” lehetőséget. Ez a menüpont csak az SQL-jegyzetfüzetcellákban és a nyelvi varázslattal rendelkezőkben %sqllátható.
      • Python-cella formázása: Válassza a „Python formátum” lehetőséget a Python-cella parancslistájából. Ez a menüelem csak a Python-jegyzetfüzetcellákban és a nyelvi varázslattal rendelkezőkben %pythonlátható.
    • Jegyzetfüzet Szerkesztés menü: Jelöljön ki egy Python- vagy SQL-cellát, majd válassza a Szerkesztés > Cella formázásalehetőséget.
  • Több cella formázása

    Jelöljön ki több cellát, majd válassza a Szerkesztés > Cella formázásalehető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 azok, amelyek a %sql és %python-t használják.

  • A jegyzetfüzet összes Python- és SQL-cellájának formázása

    Válassza a > lehetőséget. Ha a jegyzetfüzet több nyelvet is tartalmaz, csak az SQL- és Python-cellák vannak formázva. Ide tartoznak azok, amelyek a %sql és %python-t használják.

Ha testre szeretné szabni az SQL-lekérdezések formázását, tekintse meg az egyéni formátumú SQL-utasításokat.

A kódformázás korlátozásai

  • A Black érvenyesíti a PEP 8 szabványt a 4 karakteres behúzásokhoz. 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.

Kódnyelvek jegyzetfüzetekben

Alapértelmezett nyelv beállítása

A jegyzetfüzet alapértelmezett nyelve a jegyzetfüzet neve alatt 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 shell kód futtatását a jegyzetfüzetben. Ha a rendszerhéj-parancs kilépési állapota nem nulla, adja hozzá a -e beállítást, hogy a cella hibásnak minősüljön. 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 a dbutils.fs.ls parancs futtatásával listázni szeretné a fájlokat, megadhatja %fs ls. 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-cella eredmények megjeleníté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 _sqldf használata a következő Python-cellákban a Databricks Runtime 13.3 és újabb verziókban támogatott.
  • A _sqldf használata a későbbi SQL-cellákban csak a Databricks Runtime 14.3-on és a felett 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.

A cella párhuzamos végrehajtása érdekében:

  1. Futtassa a cellát.

  2. Kattintson a Futtatás most parancsra. A cellát azonnal végrehajtják.

    Futtasson párhuzamosan egy SQL-cellát az aktuálisan futó cellával.

Mivel a cella új munkamenetben fut, az ideiglenes nézetek, az UDF-ek és a 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ód futtatása az Assistantben kiszolgáló nélküli számításon

A Databricks segédben futtathat kódot kiszolgáló nélküli számításon, amely a Databricks alapértelmezett számítása. Az olyan oldalak esetében, ahol már van kijelölt számítás (például jegyzetfüzetek vagy SQL-szerkesztő), a Databricks alapértelmezés szerint használja azt. A számítási típusokkal kapcsolatos információkért lásd: Compute.

Ha nem fér hozzá a kiszolgáló nélküli számításhoz, rendelkeznie kell egy számítási példánnyal, amely a kódot futtathatja a Segéd panelen.

Varázsparancsok használata

A Databricks-jegyzetfüzetek különböző mágikus parancsokat támogatnak, amelyek a szokásos szintaxison túli funkciókat is kiterjesztik a gyakori feladatok egyszerűsítése érdekében. A varázsparancsok előtt % áll sor- és cellamagok esetén.

Magic parancs Example Leírás
%python %python
print("Hello")
Cellanyelv váltása Pythonra. Python-kódot hajt végre a cellában.
%r %r
print("Hello")
Váltson a cella nyelvére R-re. Végrehajtja az R-kódot a cellában.
%scala %scala
println("Hello")
Állítsa a cella nyelvét Scala nyelvre. Scala-kódot hajt végre a cellában.
%sql %sql
SELECT * FROM table
A cella nyelvét váltson SQL-re. Az eredmények Python-/SQL-cellákban _sqldf érhetők el.
%md %md
# Title
Content here
Váltson a cella nyelvét Markdownra. Markdown-tartalmat jelenít meg a cellában. Támogatja a szöveget, a képeket, a képleteket és a LaTeX-et.
%pip %pip install pandas Python-csomagok telepítése jegyzetfüzet szintjén. Lásd: jegyzetfüzetben elérhető Python-könyvtárak.
%run %run /path/to/notebook Egy másik jegyzetfüzet végrehajtása a függvények és változók importálásával. Lásd : Jegyzetfüzet-munkafolyamatok.
%fs %fs ls /path Hajtsa végre a dbutils fájlrendszer parancsait. Rövid kéz a parancsokhoz dbutils.fs . Lásd: Fájlokkal végzett munka.
%sh %sh ls -la Rendszerhéjparancsok végrehajtása. Csak a vezérlőcsomóponton fut. Hiba esetén használja a -e parancsot.
%tensorboard %tensorboard --logdir /logs A TensorBoard felhasználói felületének beágyazott megjelenítése. Csak a Databricks Runtime ML-n érhető el. Lásd: TensorBoard.
%set_cell_max_output_size_in_mb %set_cell_max_output_size_in_mb 10 A cellakimenet maximális méretének beállítása. Tartomány: 1-20 MB. A jegyzetfüzetben minden következő cellára érvényes.
%skip %skip
print("This won't run")
Cellavégrehajtás kihagyása. Megakadályozza a cella futását a jegyzetfüzet végrehajtásakor.

Feljegyzés

IPython Automagic: A Databricks-jegyzetfüzetekben alapértelmezés szerint engedélyezve van az IPython automagic, így bizonyos parancsok, például pip az % előtag nélkül is használhatók. Például a pip install pandas ugyanúgy működik, mint a %pip install pandas.

Fontos

  • A változók és az állapotok különböző nyelvi REPL-ek között vannak elkülönítve. A Python-változók például nem érhetők el a Scala-cellákban.
  • Egy jegyzetfüzetcellának csak egy cellamágia parancsa lehet, és a cella első sorának kell lennie.
  • %run önmagában kell lennie egy cellának, mert a teljes jegyzetfüzetet beágyazottan futtatja.
  • %pip Ha a Databricks Runtime 12.2 LTS-t használja, a telepítés után helyezze el az összes csomagtelepítési parancsot a jegyzetfüzet elejére, mivel a Python-állapot alaphelyzetbe áll a telepítés után.