Skapa ett paket manuellt
I den här självstudien skapar du ett Databricks-tillgångspaket från grunden. Det här enkla paketet består av två notebook-filer och definitionen av ett Azure Databricks-jobb för att köra dessa notebook-filer. Sedan validerar, distribuerar och kör du jobbet på din Azure Databricks-arbetsyta. De här stegen automatiserar snabbstarten med titeln Skapa ditt första arbetsflöde med ett Azure Databricks-jobb.
Krav
- Databricks CLI version 0.218.0 eller senare. Om du vill kontrollera den installerade versionen av Databricks CLI kör du kommandot
databricks -v
. Information om hur du installerar Databricks CLI finns i Installera eller uppdatera Databricks CLI. - Autentisering som konfigurerats för Databricks CLI. Se Autentisering för Databricks CLI.
- Databricks-fjärrarbetsytan måste ha arbetsytefiler aktiverade. Se Vad är arbetsytefiler?.
Steg 1: Skapa paketet
Ett paket innehåller de artefakter som du vill distribuera och inställningarna för de resurser som du vill köra.
- Skapa eller identifiera en tom katalog på utvecklingsdatorn.
- Växla till den tomma katalogen i terminalen eller öppna den i din IDE.
Dricks
Du kan också använda en katalog som innehåller en lagringsplats som klonas från en Git-provider. På så sätt kan du hantera ditt paket med extern versionskontroll och enklare samarbeta med andra utvecklare och IT-proffs i ditt projekt.
Om du väljer att klona en lagringsplats för den här demonstrationen rekommenderar Databricks att lagringsplatsen är tom eller bara har grundläggande filer i den, till exempel README
och .gitignore
. Annars kan befintliga filer på lagringsplatsen synkroniseras i onödan till din Azure Databricks-arbetsyta.
Steg 2: Lägga till anteckningsböcker i projektet
I det här steget lägger du till två notebook-filer i projektet. Den första notebook-filen får en lista över trendiga babynamn sedan 2007 från New York State Department of Healths offentliga datakällor. Se BabyNamn: Trending by Name: Beginning 2007 on the department's website. Den första notebook-filen sparar sedan dessa data till din Azure Databricks Unity Catalog-volym med namnet my-volume
i ett schema med namnet default
i en katalog med namnet main
. Den andra notebook-filen frågar efter sparade data och visar aggregerade antal babynamn efter förnamn och kön för 2014.
Från katalogens rot skapar du den första notebook-filen, en fil med namnet
retrieve-baby-names.py
.Lägg till följande kod i
retrieve-baby-names.py
-filen:# Databricks notebook source import requests response = requests.get('http://health.data.ny.gov/api/views/jxy9-yhdk/rows.csv') csvfile = response.content.decode('utf-8') dbutils.fs.put("/Volumes/main/default/my-volume/babynames.csv", csvfile, True)
Skapa den andra anteckningsboken, en fil med namnet
filter-baby-names.py
, i samma katalog.Lägg till följande kod i
filter-baby-names.py
-filen:# Databricks notebook source babynames = spark.read.format("csv").option("header", "true").option("inferSchema", "true").load("/Volumes/main/default/my-volume/babynames.csv") babynames.createOrReplaceTempView("babynames_table") years = spark.sql("select distinct(Year) from babynames_table").toPandas()['Year'].tolist() years.sort() dbutils.widgets.dropdown("year", "2014", [str(x) for x in years]) display(babynames.filter(babynames.Year == dbutils.widgets.get("year")))
Steg 3: Lägg till en paketkonfigurationsschemafil i projektet
Om du använder en IDE som Visual Studio Code, PyCharm Professional eller IntelliJ IDEA Ultimate som stöder YAML-filer och JSON-schemafiler kan du använda din IDE för att inte bara skapa paketkonfigurationsschemafilen utan för att kontrollera projektets syntax och formatering för paketkonfigurationsfilen. Även om paketkonfigurationsfilen som du skapar senare i steg 5 är YAML-baserad är paketkonfigurationsschemafilen i det här steget JSON-baserad.
Visual Studio-koden
Lägg till stöd för YAML-språkservern i Visual Studio Code, till exempel genom att installera YAML-tillägget från Visual Studio Code Marketplace.
Generera JSON-schemafilen för Databricks Asset Bundle-konfigurationen med hjälp av Databricks CLI för att köra
bundle schema
kommandot och omdirigera utdata till en JSON-fil. Generera till exempel en fil med namnetbundle_config_schema.json
i den aktuella katalogen enligt följande:databricks bundle schema > bundle_config_schema.json
I steg 5 lägger du till följande kommentar i början av paketkonfigurationsfilen, som associerar din paketkonfigurationsfil med den angivna JSON-schemafilen:
# yaml-language-server: $schema=bundle_config_schema.json
Kommentar
Om din JSON-schemafil för Databricks Asset Bundle finns i en annan sökväg i föregående kommentar ersätter du
bundle_config_schema.json
med den fullständiga sökvägen till schemafilen.
PyCharm Professional
Generera JSON-schemafilen för Databricks Asset Bundle-konfigurationen med hjälp av Databricks CLI för att köra
bundle schema
kommandot och omdirigera utdata till en JSON-fil. Generera till exempel en fil med namnetbundle_config_schema.json
i den aktuella katalogen enligt följande:databricks bundle schema > bundle_config_schema.json
Konfigurera PyCharm för att identifiera JSON-schemafilen för paketkonfiguration och slutför sedan JSON-schemamappningen genom att följa anvisningarna i Konfigurera ett anpassat JSON-schema.
I steg 5 använder du PyCharm för att skapa eller öppna en paketkonfigurationsfil. Enligt konventionen heter
databricks.yml
den här filen .
IntelliJ IDEA Ultimate
Generera JSON-schemafilen för Databricks Asset Bundle-konfigurationen med hjälp av Databricks CLI för att köra
bundle schema
kommandot och omdirigera utdata till en JSON-fil. Generera till exempel en fil med namnetbundle_config_schema.json
i den aktuella katalogen enligt följande:databricks bundle schema > bundle_config_schema.json
Konfigurera IntelliJ IDEA för att identifiera JSON-schemafilen för paketkonfiguration och slutför sedan JSON-schemamappningen genom att följa anvisningarna i Konfigurera ett anpassat JSON-schema.
I steg 5 använder du IntelliJ IDEA för att skapa eller öppna en paketkonfigurationsfil. Enligt konventionen heter
databricks.yml
den här filen .
Steg 4: Konfigurera autentisering
I det här steget konfigurerar du autentisering mellan Databricks CLI på utvecklingsdatorn och Azure Databricks-arbetsytan. Den här artikeln förutsätter att du vill använda U2M-autentisering (OAuth user-to-machine) och en motsvarande Azure Databricks-konfigurationsprofil med namnet DEFAULT
för autentisering.
Kommentar
U2M-autentisering är lämpligt för att prova de här stegen i realtid. För helt automatiserade arbetsflöden rekommenderar Databricks att du använder M2M-autentisering (machine-to-machine) för OAuth i stället. Se installationsinstruktionerna för M2M-autentisering i Autentisering.
Använd Databricks CLI för att initiera OAuth-tokenhantering lokalt genom att köra följande kommando för varje målarbetsyta.
I följande kommando ersätter du
<workspace-url>
med url:en för Azure Databricks per arbetsyta, till exempelhttps://adb-1234567890123456.7.azuredatabricks.net
.databricks auth login --host <workspace-url>
Databricks CLI uppmanar dig att spara den information som du angav som en Azure Databricks-konfigurationsprofil. Tryck
Enter
för att acceptera det föreslagna profilnamnet eller ange namnet på en ny eller befintlig profil. Alla befintliga profiler med samma namn skrivs över med den information som du angav. Du kan använda profiler för att snabbt växla autentiseringskontext över flera arbetsytor.Om du vill hämta en lista över befintliga profiler i en separat terminal eller kommandotolk använder du Databricks CLI för att köra kommandot
databricks auth profiles
. Om du vill visa en specifik profils befintliga inställningar kör du kommandotdatabricks auth env --profile <profile-name>
.I webbläsaren slutför du anvisningarna på skärmen för att logga in på din Azure Databricks-arbetsyta.
Om du vill visa en profils aktuella OAuth-tokenvärde och tokens kommande förfallotidsstämpel kör du något av följande kommandon:
databricks auth token --host <workspace-url>
databricks auth token -p <profile-name>
databricks auth token --host <workspace-url> -p <profile-name>
Om du har flera profiler med samma
--host
värde kan du behöva ange--host
alternativen och-p
tillsammans för att hjälpa Databricks CLI att hitta rätt matchande OAuth-tokeninformation.
Steg 5: Lägg till en paketkonfigurationsfil i projektet
I det här steget definierar du hur du distribuerar och kör de två notebook-filerna. I den här demonstrationen vill du använda ett Azure Databricks-jobb för att köra den första notebook-filen och sedan den andra notebook-filen. Eftersom den första notebook-filen sparar data och den andra notebook-filen frågar efter sparade data, vill du att den första notebook-filen ska slutföras innan den andra notebook-filen startar. Du modellerar dessa mål i en paketkonfigurationsfil i projektet.
- Från katalogens rot skapar du paketkonfigurationsfilen, en fil med namnet
databricks.yml
. - Lägg till följande kod i
databricks.yml
filen och ersätt<workspace-url>
med url:en per arbetsyta, till exempelhttps://adb-1234567890123456.7.azuredatabricks.net
. Den här URL:en måste matcha den i.databrickscfg
filen:
Dricks
Den första raden, som börjar med # yaml-language-server
, krävs endast om din IDE stöder den. Mer information finns i Steg 3 tidigare.
# yaml-language-server: $schema=bundle_config_schema.json
bundle:
name: baby-names
resources:
jobs:
retrieve-filter-baby-names-job:
name: retrieve-filter-baby-names-job
job_clusters:
- job_cluster_key: common-cluster
new_cluster:
spark_version: 12.2.x-scala2.12
node_type_id: Standard_DS3_v2
num_workers: 1
tasks:
- task_key: retrieve-baby-names-task
job_cluster_key: common-cluster
notebook_task:
notebook_path: ./retrieve-baby-names.py
- task_key: filter-baby-names-task
depends_on:
- task_key: retrieve-baby-names-task
job_cluster_key: common-cluster
notebook_task:
notebook_path: ./filter-baby-names.py
targets:
development:
workspace:
host: <workspace-url>
För att anpassa jobb motsvarar mappningarna i en jobbdeklaration nyttolasten för begäran, uttryckt i YAML-format, för åtgärden skapa jobb enligt beskrivningen i POST /api/2.1/jobs/create i REST API-referensen.
Dricks
Du kan definiera, kombinera och åsidosätta inställningarna för nya jobbkluster i paket med hjälp av de tekniker som beskrivs i Åsidosätt klusterinställningar i Databricks-tillgångspaket.
Steg 6: Verifiera projektets paketkonfigurationsfil
I det här steget kontrollerar du om paketkonfigurationen är giltig.
Använd Databricks CLI för att köra
bundle validate
kommandot enligt följande:databricks bundle validate
Om en sammanfattning av paketkonfigurationen returneras lyckades verifieringen. Om några fel returneras åtgärdar du felen och upprepar sedan det här steget.
Om du gör några ändringar i paketet efter det här steget bör du upprepa det här steget för att kontrollera om paketkonfigurationen fortfarande är giltig.
Steg 7: Distribuera det lokala projektet till fjärrarbetsytan
I det här steget distribuerar du de två lokala notebook-filerna till din fjärranslutna Azure Databricks-arbetsyta och skapar Azure Databricks-jobbet på din arbetsyta.
Använd Databricks CLI för att köra kommandot på
bundle deploy
följande sätt:databricks bundle deploy -t development
Kontrollera om de två lokala notebook-filerna har distribuerats: Klicka på Arbetsyta i azure Databricks-arbetsytans sidofält.
Klicka i mappen Användare >>
<your-username>
.bundle > för babynamnsutvecklingsfiler > >. De två notebook-filerna ska finnas i den här mappen.Kontrollera om jobbet har skapats: Klicka på Arbetsflöden i azure Databricks-arbetsytans sidofält.
På fliken Jobb klickar du på hämta-filtrera-baby-names-job.
Klicka på fliken Uppgifter . Det bör finnas två uppgifter: retrieve-baby-names-task och filter-baby-names-task.
Om du gör några ändringar i paketet efter det här steget bör du upprepa steg 6–7 för att kontrollera om paketkonfigurationen fortfarande är giltig och sedan distribuera om projektet.
Steg 8: Kör det distribuerade projektet
I det här steget kör du Azure Databricks-jobbet på din arbetsyta.
Använd Databricks CLI för att köra
bundle run
kommandot enligt följande:databricks bundle run -t development retrieve-filter-baby-names-job
Kopiera värdet
Run URL
för som visas i terminalen och klistra in det här värdet i webbläsaren för att öppna Azure Databricks-arbetsytan.När de två aktiviteterna har slutförts och de gröna namnlisterna har slutförts på din Azure Databricks-arbetsyta klickar du på aktiviteten filter-baby-names-task för att se frågeresultatet.
Om du gör några ändringar i paketet efter det här steget bör du upprepa steg 6–8 för att kontrollera om paketkonfigurationen fortfarande är giltig, distribuera om projektet och köra det omdistribuerade projektet.
Steg 9: Rensa
I det här steget tar du bort de två distribuerade notebook-filerna och jobbet från din arbetsyta.
Använd Databricks CLI för att köra
bundle destroy
kommandot enligt följande:databricks bundle destroy
Bekräfta begäran om jobbborttagning: När du uppmanas att permanent förstöra resurser skriver
y
du och trycker påEnter
.Bekräfta begäran om borttagning av anteckningsböcker: När du uppmanas att permanent förstöra den tidigare distribuerade mappen och alla dess filer skriver
y
du och trycker påEnter
.
bundle destroy
När kommandot körs tas endast det distribuerade jobbet och mappen som innehåller de två distribuerade notebook-filerna bort. Det här kommandot tar inte bort några biverkningar, till exempel filen babynames.csv
som den första notebook-filen skapade. Gör följande för att ta bort babybnames.csv
filen:
- I sidofältet på din Azure Databricks-arbetsyta klickar du på Katalog.
- Klicka på Bläddra i DBFS.
- Klicka på mappen FileStore .
- Klicka på listrutepilen bredvid babynames.csv och klicka på Ta bort.
- Om du också vill ta bort paketet från utvecklingsdatorn kan du nu ta bort den lokala katalogen från steg 1.