Dela via


Utveckla kod i Databricks-anteckningsböcker

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

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-bibliotek

Viktigt!

Den här funktionen finns som allmänt tillgänglig förhandsversion.

Azure Databricks stöder Python-kodformatering med black 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 Azure Databricks black och tokenize-rt. Du kan använda formateringen direkt utan att behöva installera dessa bibliotek.

På Databricks Runtime 10.4 LTS och tidigare versioner måste du installera black==22.3.0 och tokenize-rt==4.2.1 från PyPI i din notebook eller ditt kluster 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 redigeringsbehörighet i anteckningsbok 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.
    • Notebook Redigera-menyn: Välj en Python- eller SQL-cell och välj sedan Redigera > Formatera cell(er).
  • 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 > anteckningsbokens 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.

Information om hur dina SQL-frågor formateras finns i SQL-instruktioner i anpassat format.

Begränsningar i kodformatering

  • Black tillämpar PEP 8-standard för indrag med fyra mellanslag. 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 under anteckningsbokens namn.

Standardspråk för notebook

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 standardinställning använder cellerna anteckningsbokens standardsspråk. 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.

Listrutan Cellspråk

Alternativt kan du använda 'language magic'-kommandot %<language> i början av en cell. De magiska kommandon som stöds är: %python, %r, %scalaoch %sql.

Anteckning

När du anropar ett språkmagiskt kommando skickas kommandot till REPL i körningskontexten för anteckningsboken. 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.

Anteckningsfiler stöder också några få hjälpmagiska 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ända dbutils filsystemkommandon. Om du till exempel vill köra kommandot dbutils.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 SQL-autokomplettering är tillgängliga när du använder SQL i ett Python-kommando, som i ett -kommando.

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.

Anteckning

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 eller UNCACHE TABLEär variabeln _sqldf inte tillgänglig.

Skärmbilden nedan visar hur _sqldf kan användas i efterföljande Python- och SQL-celler.

dataram för sql-resultat

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

Utfö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:

  1. Kör cellen.

  2. Klicka på Kör nu. Cellen körs omedelbart.

    Kör en SQL-cell parallellt med den aktuella cellen som körs.

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 även Använda en notebook-fil med ett SQL-lager.

Kör kod i Assistent på serverlös beräkning

Du kan köra kod i assistenten på Databricks på serverlös beräkning, vilket är standardberäkningen på Databricks. För sidor där det redan finns en vald beräkning (till exempel notebook-filer eller SQL-redigerare) använder Databricks som standard den. Information om beräkningstyper finns i Beräkning.

Om du inte har åtkomst till serverlös beräkning måste du ha en beräkningsinstans tillgänglig för att köra kod i panelen Assistent.