Programmatisch communiceren met werkruimtebestanden
U kunt programmatisch communiceren met werkruimtebestanden die zijn opgeslagen in Azure Databricks. Dit maakt taken mogelijk, zoals:
- Kleine gegevensbestanden opslaan naast notebooks en code.
- Logboekbestanden schrijven naar mappen die zijn gesynchroniseerd met Git.
- Modules importeren met behulp van relatieve paden.
- Een omgevingsspecificatiebestand maken of wijzigen.
- Uitvoer schrijven van notebooks.
- Uitvoer schrijven van de uitvoering van bibliotheken zoals Tensorboard.
U kunt werkruimtebestanden programmatisch maken, bewerken, hernoemen en verwijderen in Databricks Runtime 11.3 LTS en hoger. Deze functionaliteit wordt ondersteund voor notebooks in Databricks Runtime 16.2 en hoger en serverloze omgeving 2 en hoger.
Notitie
Als u het schrijven naar werkruimtebestanden wilt uitschakelen, stelt u de omgevingsvariabele van het cluster in WSFS_ENABLE_WRITE_SUPPORT=false
. Zie Omgevingsvariabelenvoor meer informatie.
Notitie
In Databricks Runtime 14.0 en hoger is de standaard huidige werkmap (CWD) voor lokaal uitgevoerde code de map met het notebook of script dat wordt uitgevoerd. Dit is een wijziging in gedrag van Databricks Runtime 13.3 LTS en hieronder. Zie Wat is de standaard huidige werkmap?.
De locaties van bestanden lezen
Gebruik Shell-opdrachten om de locaties van bestanden te lezen, bijvoorbeeld in een opslagplaats of in het lokale bestandssysteem.
Voer het volgende in om de locatie van bestanden te bepalen:
%sh ls
-
Bestanden bevinden zich niet in een opslagplaats: De opdracht retourneert het bestandssysteem
/databricks/driver
. -
bestanden zich in een opslagplaats bevinden: De opdracht retourneert een gevirtualiseerde opslagplaats, zoals
/Workspace/Repos/name@domain.com/public_repo_2/repos_file_system
.
Dataverwerkingsruimtebestanden lezen
U kunt programmatisch kleine gegevensbestanden lezen, zoals .csv
of .json
bestanden uit code in uw notebooks. In het volgende voorbeeld wordt Pandas gebruikt om query's uit te voeren op bestanden die zijn opgeslagen in een /data
map ten opzichte van de hoofdmap van de projectopslagplaats:
import pandas as pd
df = pd.read_csv("./data/winequality-red.csv")
df
U kunt Spark gebruiken om gegevensbestanden te lezen. U moet Spark het volledig gekwalificeerde pad geven.
- Werkruimtebestanden in Git-mappen gebruiken het pad
file:/Workspace/Repos/<user-folder>/<repo-name>/path/to/file
. - Werkruimtebestanden in uw persoonlijke map gebruiken het pad:
file:/Workspace/Users/<user-folder>/path/to/file
.
U kunt het absolute of relatieve pad naar een bestand kopiëren vanuit de vervolgkeuzelijst naast het bestand:
vervolgkeuzelijst
In het onderstaande voorbeeld ziet u het gebruik van {os.getcwd()}
om het volledige pad te verkrijgen.
import os
spark.read.format("csv").load(f"file:{os.getcwd()}/my_data.csv")
Zie Werken met bestanden in Azure Databricksvoor meer informatie over bestanden in Azure Databricks.
Programmatisch bestanden en mappen maken, bijwerken en verwijderen
In Databricks Runtime 11.3 LTS en hoger kunt u werkruimtebestanden rechtstreeks bewerken in Azure Databricks. Notebooks worden behandeld als werkruimtebestanden in Databricks Runtime 16.2 en hoger, en serverloze omgeving 2 en hoger. In de volgende voorbeelden worden standaard Python-pakketten en -functionaliteit gebruikt om bestanden en mappen te maken en bewerken.
# Create a new directory
os.mkdir('dir1')
# Create a new file and write to it
with open('dir1/new_file.txt', "w") as f:
f.write("new content")
# Append to a file
with open('dir1/new_file.txt', "a") as f:
f.write(" continued")
# Delete a file
os.remove('dir1/new_file.txt')
# Delete a directory
os.rmdir('dir1')
Notebooks als werkruimtebestanden
Notitie
Deze functie is beschikbaar in Databricks Runtime 16.2 en hoger en serverloze omgeving 2 en hoger.
Alle programmatische interacties met bestanden zijn ook beschikbaar voor notebooks. Een asset in de werkruimte wordt geïdentificeerd als een notebook als:
- het heeft een
.ipynb
-extensie, - of bevat de tekenreeks
Databricks notebook source
in een opmerking in de eerste regel en heeft een van de volgende extensies:.py
,.r
,.scala
,.sql
.
Elke schrijf- of naamswijziging van een notitieblok of bestand dat deze voorwaarden wijzigt, wijzigt ook het type notitieblok of bestand. Als u bijvoorbeeld een bestand myfile.txt
hebt met # Databricks notebook source
als eerste regel, dan verandert u de naam van dat bestand naar myfile.py
om het om te zetten in een notitieblok.
Zie Een bestand importeren en converteren naar een notitieblokvoor informatie over het converteren van een bestand naar een notitieblok.