Usare i file in Azure Databricks
Azure Databricks offre più utilità e API per interagire con i file nei percorsi seguenti:
- Volumi del catalogo Unity
- File dell'area di lavoro
- Archiviazione di oggetti cloud
- Montaggi DBFS e radice DBFS
- Archiviazione temporanea collegata al nodo driver del cluster
Questo articolo fornisce esempi per l'interazione con i file in questi percorsi per gli strumenti seguenti:
- Apache Spark
- SPARK SQL e Databricks SQL
- Utitlities del file system di Databricks (
dbutils.fs
o%fs
) - Interfaccia della riga di comando di Databricks
- API REST di Databricks
- Comandi della shell Bash (
%sh
) - Installazioni della libreria con ambito notebook tramite
%pip
- Pandas
- Utilità di elaborazione e gestione dei file Python oss
Importante
Le operazioni di file che richiedono l'accesso FUSE ai dati non possono accedere direttamente all'archiviazione di oggetti cloud usando gli URI. Databricks consiglia di usare i volumi di Unity Catalog per configurare l'accesso a queste posizioni per FUSE.
Scala non supporta FUSE per i volumi del catalogo Unity o i file dell'area di lavoro nel calcolo configurato con la modalità di accesso utente singolo o i cluster senza Il catalogo unity. Scala supporta FUSE per i volumi del catalogo Unity e i file dell'area di lavoro nel calcolo configurati con Il catalogo unity e la modalità di accesso condiviso.
È necessario fornire uno schema URI per accedere ai dati?
I percorsi di accesso ai dati in Azure Databricks seguono uno degli standard seguenti:
I percorsi in stile URI includono uno schema URI. Per le soluzioni di accesso ai dati native di Databricks, gli schemi URI sono facoltativi per la maggior parte dei casi d'uso. Quando si accede direttamente ai dati nell'archiviazione oggetti cloud, è necessario specificare lo schema URI corretto per il tipo di archiviazione.
I percorsi in stile POSIX forniscono l'accesso ai dati relativi alla radice del driver (
/
). I percorsi in stile POSIX non richiedono mai uno schema. È possibile usare volumi del catalogo Unity o montaggi DBFS per fornire l'accesso in stile POSIX ai dati nell'archiviazione di oggetti cloud. Molti framework ML e altri moduli Python OSS richiedono FUSE e possono usare solo percorsi in stile POSIX.
Usare i file nei volumi del catalogo Unity
Databricks consiglia di usare i volumi di Unity Catalog per configurare l'accesso ai file di dati non tabulari archiviati nell'archiviazione di oggetti cloud. Vedere Che cosa sono i volumi del catalogo Unity?.
Strumento | Esempio |
---|---|
Apache Spark | spark.read.format("json").load("/Volumes/my_catalog/my_schema/my_volume/data.json").show() |
SPARK SQL e Databricks SQL | SELECT * FROM csv.`/Volumes/my_catalog/my_schema/my_volume/data.csv`; LIST '/Volumes/my_catalog/my_schema/my_volume/'; |
Utilità del file system di Databricks | dbutils.fs.ls("/Volumes/my_catalog/my_schema/my_volume/") %fs ls /Volumes/my_catalog/my_schema/my_volume/ |
Interfaccia della riga di comando di Databricks | databricks fs cp /path/to/local/file dbfs:/Volumes/my_catalog/my_schema/my_volume/ |
API REST di Databricks | POST https://<databricks-instance>/api/2.1/jobs/create {"name": "A multitask job", "tasks": [{..."libraries": [{"jar": "/Volumes/dev/environment/libraries/logging/Logging.jar"}],},...]} |
Comandi della shell Bash | %sh curl http://<address>/text.zip -o /Volumes/my_catalog/my_schema/my_volume/tmp/text.zip |
Installazioni della libreria | %pip install /Volumes/my_catalog/my_schema/my_volume/my_library.whl |
Pandas | df = pd.read_csv('/Volumes/my_catalog/my_schema/my_volume/data.csv') |
OSS Python | os.listdir('/Volumes/my_catalog/my_schema/my_volume/path/to/directory') |
Nota
Lo dbfs:/
schema è necessario quando si usa l'interfaccia della riga di comando di Databricks.
Limitazioni dei volumi
I volumi presentano le limitazioni seguenti:
Le scritture direct-append o non sequenziali (casuali), ad esempio la scrittura di file ZIP ed Excel non sono supportate. Per i carichi di lavoro direct-append o random-write, eseguire prima le operazioni su un disco locale e quindi copiare i risultati nei volumi del catalogo Unity. Ad esempio:
# python import xlsxwriter from shutil import copyfile workbook = xlsxwriter.Workbook('/local_disk0/tmp/excel.xlsx') worksheet = workbook.add_worksheet() worksheet.write(0, 0, "Key") worksheet.write(0, 1, "Value") workbook.close() copyfile('/local_disk0/tmp/excel.xlsx', '/Volumes/my_catalog/my_schema/my_volume/excel.xlsx')
I file di tipo sparse non sono supportati. Per copiare i file sparse, usare
cp --sparse=never
:$ cp sparse.file /Volumes/my_catalog/my_schema/my_volume/sparse.file error writing '/dbfs/sparse.file': Operation not supported $ cp --sparse=never sparse.file /Volumes/my_catalog/my_schema/my_volume/sparse.file
Usare i file dell'area di lavoro
I file dell'area di lavoro di Databricks sono il set di file in un'area di lavoro che non sono notebook. È possibile usare i file dell'area di lavoro per archiviare e accedere ai dati e ad altri file salvati insieme ai notebook e ad altri asset dell'area di lavoro. Poiché i file dell'area di lavoro hanno restrizioni sulle dimensioni, Databricks consiglia di archiviare solo file di dati di piccole dimensioni principalmente per lo sviluppo e il test.
Strumento | Esempio |
---|---|
Apache Spark | spark.read.format("json").load("file:/Workspace/Users/<user-folder>/data.json").show() |
SPARK SQL e Databricks SQL | SELECT * FROM json.`file:/Workspace/Users/<user-folder>/file.json`; |
Utilità del file system di Databricks | dbutils.fs.ls("file:/Workspace/Users/<user-folder>/") %fs ls file:/Workspace/Users/<user-folder>/ |
Interfaccia della riga di comando di Databricks | databricks workspace list |
API REST di Databricks | POST https://<databricks-instance>/api/2.0/workspace/delete {"path": "/Workspace/Shared/code.py", "recursive": "false"} |
Comandi della shell Bash | %sh curl http://<address>/text.zip -o /Workspace/Users/<user-folder>/text.zip |
Installazioni della libreria | %pip install /Workspace/Users/<user-folder>/my_library.whl |
Pandas | df = pd.read_csv('/Workspace/Users/<user-folder>/data.csv') |
OSS Python | os.listdir('/Workspace/Users/<user-folder>/path/to/directory') |
Nota
Lo file:/
schema è necessario quando si lavora con le utilità di Databricks, Apache Spark o SQL.
Limitazioni dei file dell'area di lavoro
I file dell'area di lavoro presentano le limitazioni seguenti:
Le dimensioni del file dell'area di lavoro sono limitate a 500 MB dall'interfaccia utente. Le dimensioni massime consentite per la scrittura da un cluster sono pari a 256 MB.
Se il flusso di lavoro usa il codice sorgente che si trova in un repository Git remoto, non è possibile scrivere nella directory corrente o scrivere usando un percorso relativo. Scrivere dati in altre opzioni di posizione.
Non è possibile usare
git
i comandi quando si salva nei file dell'area di lavoro. La creazione di directory non è consentita nei file dell'area.git
di lavoro.È disponibile un supporto limitato per le operazioni dei file dell'area di lavoro dal calcolo serverless.
Gli executor non possono scrivere nei file dell'area di lavoro.
i collegamenti simbolici non sono supportati.
Non è possibile accedere ai file dell'area di lavoro dalle funzioni definite dall'utente nei cluster con modalità di accesso condiviso.
Dove vanno i file dell'area di lavoro eliminati?
L'eliminazione di un file dell'area di lavoro lo invia al cestino. È possibile recuperare o eliminare definitivamente i file dal cestino usando l'interfaccia utente.
Vedere Eliminare un oggetto.
Usare i file nell'archiviazione di oggetti cloud
Databricks consiglia di usare i volumi di Unity Catalog per configurare l'accesso sicuro ai file nell'archiviazione di oggetti cloud. Se si sceglie di accedere direttamente ai dati nell'archiviazione oggetti cloud usando gli URI, è necessario configurare le autorizzazioni. Vedere Gestire percorsi esterni, tabelle esterne e volumi esterni.
Gli esempi seguenti usano gli URI per accedere ai dati nell'archiviazione di oggetti cloud:
Strumento | Esempio |
---|---|
Apache Spark | spark.read.format("json").load("abfss://container-name@storage-account-name.dfs.core.windows.net/path/file.json").show() |
SPARK SQL e Databricks SQL | SELECT * FROM csv.`abfss://container-name@storage-account-name.dfs.core.windows.net/path/file.json`; LIST 'abfss://container-name@storage-account-name.dfs.core.windows.net/path'; |
Utilità del file system di Databricks | dbutils.fs.ls("abfss://container-name@storage-account-name.dfs.core.windows.net/path/") %fs ls abfss://container-name@storage-account-name.dfs.core.windows.net/path/ |
Interfaccia della riga di comando di Databricks | Non supportato |
API REST di Databricks | Non supportato |
Comandi della shell Bash | Non supportato |
Installazioni della libreria | %pip install abfss://container-name@storage-account-name.dfs.core.windows.net/path/to/library.whl |
Pandas | Non supportato |
OSS Python | Non supportato |
Nota
L'archiviazione di oggetti cloud non supporta il pass-through delle credenziali.
Usare i file nei montaggi DBFS e nella radice DBFS
I montaggi DBFS non sono a protezione diretta con Unity Catalog e non sono più consigliati da Databricks. I dati archiviati nella radice DBFS sono accessibili da tutti gli utenti nell'area di lavoro. Databricks consiglia di archiviare codice o dati sensibili o di produzione nella radice DBFS. Vedere Che cos'è DBFS?.
Strumento | Esempio |
---|---|
Apache Spark | spark.read.format("json").load("/mnt/path/to/data.json").show() |
SPARK SQL e Databricks SQL | SELECT * FROM json.`/mnt/path/to/data.json`; |
Utilità del file system di Databricks | dbutils.fs.ls("/mnt/path") %fs ls /mnt/path |
Interfaccia della riga di comando di Databricks | databricks fs cp dbfs:/mnt/path/to/remote/file /path/to/local/file |
API REST di Databricks | POST https://<host>/api/2.0/dbfs/delete --data '{ "path": "/tmp/HelloWorld.txt" }' |
Comandi della shell Bash | %sh curl http://<address>/text.zip > /dbfs/mnt/tmp/text.zip |
Installazioni della libreria | %pip install /dbfs/mnt/path/to/my_library.whl |
Pandas | df = pd.read_csv('/dbfs/mnt/path/to/data.csv') |
OSS Python | os.listdir('/dbfs/mnt/path/to/directory') |
Nota
Lo dbfs:/
schema è necessario quando si usa l'interfaccia della riga di comando di Databricks.
Usare i file nella risorsa di archiviazione temporanea collegata al nodo driver
L'archiviazione ephermal collegata al nodo driver è l'archiviazione a blocchi con accesso al percorso nativo basato su POSIX. Tutti i dati archiviati in questa posizione scompaiono quando un cluster termina o riavvia.
Strumento | Esempio |
---|---|
Apache Spark | Non supportato |
SPARK SQL e Databricks SQL | Non supportato |
Utilità del file system di Databricks | dbutils.fs.ls("file:/path") %fs ls file:/path |
Interfaccia della riga di comando di Databricks | Non supportato |
API REST di Databricks | Non supportato |
Comandi della shell Bash | %sh curl http://<address>/text.zip > /tmp/text.zip |
Installazioni della libreria | Non supportato |
Pandas | df = pd.read_csv('/path/to/data.csv') |
OSS Python | os.listdir('/path/to/directory') |
Nota
Lo file:/
schema è necessario quando si lavora con Le utilità di Databricks.
Spostare i dati dall'archiviazione temporanea ai volumi
È possibile accedere ai dati scaricati o salvati in un archivio temporaneo usando Apache Spark. Poiché l'archiviazione temporanea è collegata al driver e Spark è un motore di elaborazione distribuito, non tutte le operazioni possono accedere direttamente ai dati qui. Se è necessario spostare i dati dal file system driver ai volumi di Unity Catalog, è possibile copiare i file usando comandi magic o le utilità di Databricks, come negli esempi seguenti:
dbutils.fs.cp ("file:/<path>", "/Volumes/<catalog>/<schema>/<volume>/<path>")
%sh cp /<path> /Volumes/<catalog>/<schema>/<volume>/<path>
%fs cp file:/<path> /Volumes/<catalog>/<schema>/<volume>/<path>
Commenti e suggerimenti
https://aka.ms/ContentUserFeedback.
Presto disponibile: Nel corso del 2024 verranno gradualmente disattivati i problemi di GitHub come meccanismo di feedback per il contenuto e ciò verrà sostituito con un nuovo sistema di feedback. Per altre informazioni, vedereInvia e visualizza il feedback per