Utveckla kod i Databricks-notebook-filer
Den här sidan beskriver hur du utvecklar kod i Databricks-notebook-filer, inklusive automatisk komplettering, automatisk formatering för Python och SQL, kombinerar Python och SQL i en notebook-fil och spårar versionshistoriken för notebook-filer.
Mer information om avancerade funktioner som är tillgängliga i redigeraren, till exempel automatiskt slutförande, variabelval, stöd för flera markörer och jämförelse sida vid sida, finns i Navigera i Databricks notebook och filredigeraren.
När du använder notebook-filen eller filredigeraren är Databricks Assistant tillgängligt för att hjälpa dig att generera, förklara och felsöka kod. Mer information finns i Använda Databricks Assistant .
Databricks-notebook-filer innehåller också ett inbyggt interaktivt felsökningsprogram för Python-notebook-filer. Se Felsöka notebook-filer.
Modularisera koden
Viktigt!
Den här funktionen finns som allmänt tillgänglig förhandsversion.
Med Databricks Runtime 11.3 LTS och senare kan du skapa och hantera källkodsfiler på Azure Databricks-arbetsytan och sedan importera filerna till dina notebook-filer efter behov.
Mer information om hur du arbetar med källkodsfiler finns i Dela kod mellan Databricks-notebook-filer och Arbeta med Python- och R-moduler.
Formatera kodceller
Azure Databricks innehåller verktyg som gör att du snabbt och enkelt kan formatera Python- och SQL-kod i notebook-celler. De här verktygen minskar arbetet med att hålla koden formaterad och bidra till att tillämpa samma kodningsstandarder i dina notebook-filer.
Python black formatter library
Viktigt!
Den här funktionen finns som allmänt tillgänglig förhandsversion.
Azure Databricks stöder Python-kodformatering med svart i notebook-filen. Notebook-filen måste vara ansluten till ett kluster med black
och tokenize-rt
Python-paket installerade.
På Databricks Runtime 11.3 LTS och senare förinstallerar black
Azure Databricks och tokenize-rt
. Du kan använda formateringen direkt utan att behöva installera dessa bibliotek.
På Databricks Runtime 10.4 LTS och nedan måste du installera black==22.3.0
och tokenize-rt==4.2.1
från PyPI i notebook-filen eller klustret för att kunna använda Python-formatören. Du kan köra följande kommando i anteckningsboken:
%pip install black==22.3.0 tokenize-rt==4.2.1
eller installera biblioteket i klustret.
Mer information om hur du installerar bibliotek finns i Python-miljöhantering.
För filer och notebook-filer i Databricks Git-mappar kan du konfigurera Python-formaterare baserat på pyproject.toml
filen. Om du vill använda den här funktionen skapar du en pyproject.toml
fil i Git-mappens rotkatalog och konfigurerar den enligt formatet Svart konfiguration. Redigera avsnittet [tool.black] i filen. Konfigurationen tillämpas när du formaterar alla filer och anteckningsböcker i git-mappen.
Formatera Python- och SQL-celler
Du måste ha behörigheten KAN REDIGERA i anteckningsboken för att formatera kod.
Azure Databricks använder biblioteket Gethue/sql-formatter för att formatera SQL och svart kodformaterare för Python.
Du kan utlösa formateraren på följande sätt:
Formatera en enskild cell
- Kortkommando: Tryck på Cmd+Skift+F.
- Snabbmeny för kommando:
- Formatera SQL-cell: Välj Formatera SQL i kommandokontextens listruta för en SQL-cell. Det här menyalternativet är endast synligt i SQL Notebook-celler eller i de med språkmagi
%sql
. - Formatera Python-cell: Välj Formatera Python- i listrutan kommandokontext i en Python-cell. Det här menyalternativet är endast synligt i Python Notebook-celler eller i de med språkmagi
%python
.
- Formatera SQL-cell: Välj Formatera SQL i kommandokontextens listruta för en SQL-cell. Det här menyalternativet är endast synligt i SQL Notebook-celler eller i de med språkmagi
- Notebook Redigera-menyn: Välj en Python- eller SQL-cell och välj sedan Redigera > formatceller.
Formatera flera celler
Markera flera celler och välj sedan Redigera > Formatera cell(er). Om du väljer celler med fler än ett språk formateras endast SQL- och Python-celler. Detta inkluderar de som använder
%sql
och%python
.Formatera alla Python- och SQL-celler i notebook-filen
Välj Redigera > Notebook-format. Om notebook-filen innehåller mer än ett språk formateras endast SQL- och Python-celler. Detta inkluderar de som använder
%sql
och%python
.
Begränsningar i kodformatering
- Black tillämpar PEP 8-standarder för 4-blankstegs indrag. Indrag kan inte konfigureras.
- Formatering av inbäddade Python-strängar i en SQL UDF stöds inte. På samma sätt stöds inte formatering av SQL-strängar i en Python UDF.
Kodspråk i notebook-filer
Ange standardspråk
Standardspråket för notebook-filen visas bredvid notebook-namnet.
Om du vill ändra standardspråket klickar du på språkknappen och väljer det nya språket på den nedrullningsbara menyn. För att säkerställa att befintliga kommandon fortsätter att fungera prefixas kommandon för det tidigare standardspråket automatiskt med ett språkmagikommando.
Blanda språk
Som standard använder celler standardspråket för notebook-filen. Du kan åsidosätta standardspråket i en cell genom att klicka på språkknappen och välja ett språk i den nedrullningsbara menyn.
Alternativt kan du använda kommandot %<language>
language magic i början av en cell. De magiska kommandon som stöds är: %python
, %r
, %scala
och %sql
.
Kommentar
När du anropar ett språkmagikommando skickas kommandot till REPL i körningskontexten för notebook-filen. Variabler som definierats på ett språk (och därmed i REPL för det språket) är inte tillgängliga i REPL för ett annat språk. REPL:er kan endast dela tillstånd via externa resurser, till exempel filer i DBFS eller objekt i objektlagring.
Notebook-filer har också stöd för några extra magiska kommandon:
-
%sh
: Gör att du kan köra shell-kod i notebook-filen. Om du vill misslyckas med cellen om shell-kommandot har en slutstatus som inte är noll lägger du till alternativet-e
. Det här kommandot körs bara på Apache Spark-drivrutinen och inte på arbetarna. Om du vill köra ett gränssnittskommando på alla noder använder du ett init-skript. -
%fs
: Gör att du kan användadbutils
filsystemkommandon. Om du till exempel vill köra kommandotdbutils.fs.ls
för att visa filer kan du ange%fs ls
i stället. Mer information finns i Arbeta med filer på Azure Databricks. -
%md
: Gör att du kan inkludera olika typer av dokumentation, inklusive text, bilder och matematiska formler och ekvationer. Se nästa avsnitt.
SQL-syntaxmarkering och automatisk komplettering i Python-kommandon
Syntaxmarkering och automatisk komplettering av SQL
Utforska SQL-cellresultat
I en Databricks-notebook-fil görs resultat från en SQL-språkcell automatiskt tillgängliga som en implicit DataFrame tilldelad till variabeln _sqldf
. Du kan sedan använda den här variabeln i alla Python- och SQL-celler som du kör efteråt, oavsett deras position i notebook-filen.
Kommentar
Den här funktionen har följande begränsningar:
- Variabeln
_sqldf
är inte tillgänglig i notebook-filer som använder ett SQL-lager för beräkning. - Användning
_sqldf
i efterföljande Python-celler stöds i Databricks Runtime 13.3 och senare. - Användning
_sqldf
i efterföljande SQL-celler stöds endast på Databricks Runtime 14.3 och senare. - Om frågan använder nyckelorden
CACHE TABLE
ellerUNCACHE TABLE
är variabeln_sqldf
inte tillgänglig.
Skärmbilden nedan visar hur _sqldf
du kan användas i efterföljande Python- och SQL-celler:
Viktigt!
Variabeln _sqldf
omtilldelas varje gång en SQL-cell körs. Om du vill undvika att förlora referensen till ett specifikt DataFrame-resultat tilldelar du det till ett nytt variabelnamn innan du kör nästa SQL-cell:
Python
new_dataframe_name = _sqldf
SQL
ALTER VIEW _sqldf RENAME TO new_dataframe_name
Köra SQL-celler parallellt
När ett kommando körs och anteckningsboken är kopplad till ett interaktivt kluster kan du köra en SQL-cell samtidigt med det aktuella kommandot. SQL-cellen körs i en ny, parallell session.
Så här kör du en cell parallellt:
Klicka på Kör nu. Cellen körs omedelbart.
Eftersom cellen körs i en ny session stöds inte tillfälliga vyer, UDF:er och implicita Python DataFrame- (_sqldf
) för celler som körs parallellt. Dessutom används standardkatalog- och databasnamnen under parallell körning. Om koden refererar till en tabell i en annan katalog eller databas måste du ange tabellnamnet med hjälp av namnområdet på tre nivåer (catalog
.schema
.table
).
Köra SQL-celler på ett SQL-lager
Du kan köra SQL-kommandon i en Databricks-notebook-fil på ett SQL-lager, en typ av beräkning som är optimerad för SQL-analys. Se Använda en notebook-fil med ett SQL-lager.