Code ontwikkelen in Databricks-notebooks
Op deze pagina wordt beschreven hoe u code ontwikkelt in Databricks-notebooks, waaronder automatisch aanvullen, automatische opmaak voor Python en SQL, het combineren van Python en SQL in een notebook en het bijhouden van de versiegeschiedenis van het notebook.
Zie Navigate the Databricks notebook and file editorvoor meer informatie over geavanceerde functionaliteit die beschikbaar is in de editor, zoals automatisch aanvullen, variabele selectie, ondersteuning voor meerdere cursors en side-by-side diffs.
Wanneer u het notebook of de bestandseditor gebruikt, is Databricks Assistant beschikbaar om u te helpen bij het generate, explainen het debuggen van code. Zie Databricks Assistant gebruiken voor meer informatie.
Databricks-notebooks bevatten ook een ingebouwd interactief foutopsporingsprogramma voor Python-notebooks. Zie Notebooks voor foutopsporing.
Uw code modulariseren
Belangrijk
Deze functie is beschikbaar als openbare preview.
Met Databricks Runtime 11.3 LTS en hoger kunt u broncodebestanden maken en beheren in de Azure Databricks-werkruimte en deze bestanden vervolgens indien nodig importeren in uw notebooks.
Zie Code delen tussen Databricks-notebooks en werken met Python- en R-modules voor meer informatie over het werken met broncodebestanden.
Codecellen opmaken
Azure Databricks biedt hulpprogramma's waarmee u Python- en SQL-code in notebookcellen snel en eenvoudig kunt opmaken. Deze hulpprogramma's verminderen de moeite om uw code geformatteerd te houden en om dezelfde coderingsstandaarden af te dwingen in uw notebooks.
Zwarte indelingsbibliotheek voor Python
Belangrijk
Deze functie is beschikbaar als openbare preview.
Azure Databricks biedt ondersteuning voor python-codeopmaak met zwart in het notebook. Het notebook moet zijn gekoppeld aan een cluster en black
tokenize-rt
Python-pakketten zijn geïnstalleerd.
Op Databricks Runtime 11.3 LTS en hoger installeert black
Azure Databricks vooraf en tokenize-rt
. U kunt de formatter rechtstreeks gebruiken zonder deze bibliotheken te hoeven installeren.
Op Databricks Runtime 10.4 LTS en hieronder moet u PyPI op uw notebook of cluster installeren black==22.3.0
en tokenize-rt==4.2.1
gebruiken om de Python-formatter te gebruiken. U kunt de volgende opdracht uitvoeren in uw notebook:
%pip install black==22.3.0 tokenize-rt==4.2.1
of installeer de bibliotheek op uw cluster.
Zie Python-omgevingsbeheer voor meer informatie over het installeren van bibliotheken.
Voor bestanden en notebooks in Databricks Git-mappen kunt u de Python-indeling configureren op basis van het pyproject.toml
bestand. Als u deze functie wilt gebruiken, maakt u een pyproject.toml
bestand in de hoofdmap van de Git-map en configureert u het volgens de black-configuratie-indeling. Bewerk de sectie [tool.black] in het bestand. De configuratie wordt toegepast wanneer u een bestand en notitieblok in die Git-map opmaken.
Python- en SQL-cellen opmaken
U moet de machtiging CAN EDIT voor het notitieblok hebben om code op te maken.
Azure Databricks maakt gebruik van de Gethue-/sql-formatter-bibliotheek om SQL en de zwarte code-formatter voor Python op te maken.
U kunt de formatter op de volgende manieren activeren:
Een enkele cel opmaken
- Sneltoets: Druk op Cmd+Shift+F.
- Contextmenu opdracht:
- SQL-cel opmaken: SelectSQL- opmaken in de vervolgkeuzemenu van de opdrachtcontext van een SQL-cel. Dit menu-item is alleen zichtbaar in SQL Notebook-cellen of cellen met een
%sql
taalmagie. - Opmaken van Python-cellen: SelectFormatteer Python- in het vervolgkeuzemenu voor opdrachtcontext van een Python-cel. Dit menu-item is alleen zichtbaar in Python-notebookcellen of cellen met een
%python
taalmagie.
- SQL-cel opmaken: SelectSQL- opmaken in de vervolgkeuzemenu van de opdrachtcontext van een SQL-cel. Dit menu-item is alleen zichtbaar in SQL Notebook-cellen of cellen met een
- Notitieblok bewerken menu: Select een Python- of SQL-cel, en selectvervolgens > Cel(len) formatteren.
Meerdere cellen opmaken
Select meerdere cellen en vervolgens selectbewerken > cel(len) opmaken. Als u cellen van meer dan één taal select, worden alleen SQL- en Python-cellen opgemaakt. Dit geldt ook voor die welke worden gebruikt
%sql
en%python
.Alle Python- en SQL-cellen in het notebook opmaken
Select Bewerken > Notitieblok opmaken. Als uw notebook meer dan één taal bevat, worden alleen SQL- en Python-cellen opgemaakt. Dit geldt ook voor die welke worden gebruikt
%sql
en%python
.
Beperkingen van codeopmaak
- Zwart dwingt PEP 8-standaarden af voor inspringing met vier spaties. Inspringing kan niet worden geconfigureerd.
- Het opmaken van ingesloten Python-tekenreeksen in een SQL UDF wordt niet ondersteund. Op dezelfde manier wordt het opmaken van SQL-tekenreeksen in een Python UDF niet ondersteund.
Codetalen in notebooks
Set standaardtaal
De standaardtaal voor het notitieblok wordt weergegeven naast de naam van het notitieblok.
Als u de standaardtaal wilt wijzigen, klikt u op de taalknop en select u de nieuwe taal in de vervolgkeuzelijst. Om ervoor te zorgen dat bestaande opdrachten blijven werken, worden opdrachten van de vorige standaardtaal automatisch voorafgegaan door een magic-opdracht voor taal.
Talen combineren
Cellen gebruiken standaard de standaardtaal van het notitieblok. U kunt de standaardtaal in een cel overschrijven door op de taalknop te klikken en een taal te selecteren in de vervolgkeuzelijst.
U kunt ook de magic-opdracht %<language>
taal aan het begin van een cel gebruiken. De ondersteunde magic-opdrachten zijn: %python
, %r
, %scala
en %sql
.
Notitie
Wanneer u een magic-opdracht voor taal aanroept, wordt de opdracht verzonden naar de REPL in de uitvoeringscontext voor het notebook. Variabelen die zijn gedefinieerd in één taal (en dus in de REPL voor die taal) zijn niet beschikbaar in de REPL van een andere taal. REPL's kunnen alleen de status delen via externe resources, zoals bestanden in DBFS of objecten in objectopslag.
Notebooks bieden ook ondersteuning voor een aantal aanvullende magic-opdrachten:
-
%sh
: Hiermee kunt u shellcode uitvoeren in uw notebook. Als u de cel wilt laten mislukken als de shell-opdracht de afsluitstatus niet nul heeft, voegt u de-e
optie toe. Met deze opdracht wordt alleen uitgevoerd op het Apache Spark-stuurprogramma en niet op de werkrollen. Als u een shell-opdracht wilt uitvoeren op alle knooppunten, gebruikt u een init-script. -
%fs
: Hiermee kunt u bestandssysteemopdrachten gebruikendbutils
. Als u bijvoorbeeld de opdrachtdbutils.fs.ls
wilt uitvoeren om bestanden te list, kunt u in plaats daarvan%fs ls
opgeven. Zie Werken met bestanden in Azure Databricks voor meer informatie. -
%md
: Hiermee kunt u verschillende soorten documentatie opnemen, waaronder tekst, afbeeldingen en wiskundige formules en vergelijkingen. Bekijk de volgende sectie.
SQL-syntaxis markeren en automatisch aanvullen in Python-opdrachten
Syntaxismarkeringen en automatisch aanvullen van SQL
Sql-celresultaten verkennen
In een Databricks-notebook worden resultaten van een SQL-taalcel automatisch beschikbaar gemaakt als een impliciet DataFrame dat is toegewezen aan de variabele _sqldf
. U kunt deze variabele vervolgens gebruiken in python- en SQL-cellen die u later uitvoert, ongeacht hun positie in het notebook.
Notitie
Deze functie heeft de volgende beperkingen:
- De
_sqldf
variabele is niet beschikbaar in notebooks die gebruikmaken van een SQL-warehouse voor berekening. - Het gebruik
_sqldf
in volgende Python-cellen wordt ondersteund in Databricks Runtime 13.3 en hoger. - Het gebruik
_sqldf
in volgende SQL-cellen wordt alleen ondersteund in Databricks Runtime 14.3 en hoger. - Als de query gebruikmaakt van de trefwoorden
CACHE TABLE
ofUNCACHE TABLE
, is de_sqldf
variabele niet beschikbaar.
In de onderstaande schermopname ziet u hoe _sqldf
u deze kunt gebruiken in volgende Python- en SQL-cellen:
Belangrijk
De variabele _sqldf
wordt telkens opnieuw toegewezen wanneer een SQL-cel wordt uitgevoerd. Als u wilt voorkomen dat verwijzingen naar een specifiek DataFrame-resultaat verloren gaan, wijst u deze toe aan een nieuwe variabelenaam voordat u de volgende SQL-cel uitvoert:
Python
new_dataframe_name = _sqldf
SQL
ALTER VIEW _sqldf RENAME TO new_dataframe_name
SQL-cellen parallel uitvoeren
Terwijl een opdracht wordt uitgevoerd en uw notebook is gekoppeld aan een interactief cluster, kunt u een SQL-cel tegelijk uitvoeren met de huidige opdracht. De SQL-cel wordt uitgevoerd in een nieuwe, parallelle sessie.
Een cel parallel uitvoeren:
Voer de cel uit.
Klik op Nu uitvoeren. De cel wordt onmiddellijk uitgevoerd.
Omdat de cel wordt uitgevoerd in een nieuwe sessie, worden tijdelijke views, UDF's en de impliciete Python DataFrame- (_sqldf
) niet ondersteund voor cellen die parallel worden uitgevoerd. Daarnaast worden de standaardnamen catalog en databasenamen gebruikt tijdens parallelle uitvoering. Als uw code verwijst naar een table in een andere catalog of database, moet u de naam van de table opgeven met een naamruimte met drie niveaus (catalog
.schema
.table
).
SQL-cellen uitvoeren op een SQL-warehouse
U kunt SQL-opdrachten uitvoeren in een Databricks-notebook in een SQL-warehouse, een type rekenproces dat is geoptimaliseerd voor SQL-analyses. Zie Een notebook gebruiken met een SQL-warehouse.