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
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.
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 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
%sql
lá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
%python
látható.
- 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
- 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 a használt
%sql
és%python
a .A jegyzetfüzet összes Python- és SQL-cellájának formázása
Válassza > 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.
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 adbutils.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.
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 _sqldf
rendelt 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, vagyUNCACHE TABLE
a_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:
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:
Kattintson a Futtatás most parancsra. A cella azonnal végrehajtásra kerül.
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.