Delen via


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 bestand

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.