Nota
O acesso a esta página requer autorização. Podes tentar iniciar sessão ou mudar de diretório.
O acesso a esta página requer autorização. Podes tentar mudar de diretório.
O Azure Databricks tem vários utilitários e APIs para interagir com arquivos nos seguintes locais:
- Volumes do catálogo Unity
- Arquivos de espaço de trabalho
- Armazenamento de objetos na nuvem
- Montagens e raiz do DBFS
- Armazenamento efémero ligado ao nó de controlo do cluster
Este artigo tem exemplos de interação com arquivos nesses locais para as seguintes ferramentas:
- Apache Spark
- Spark SQL e Databricks SQL
- Utilitários do sistema de arquivos Databricks (
dbutils.fsou%fs) - CLI do Databricks
- Databricks REST API
- Comandos shell Bash (
%sh) - Instalações de bibliotecas com escopo de notebook usando
%pip - pandas
- Utilitários de processamento e gerenciamento de arquivos OSS Python
Importante
Algumas operações em Databricks, especialmente aquelas que usam bibliotecas Java ou Scala, são executadas como processos JVM, por exemplo:
- Especificando uma dependência de arquivo JAR usando
--jarsnas configurações do Spark - Chamadas
catoujava.io.Fileem blocos de notas Scala - Fontes de dados personalizadas, como
spark.read.format("com.mycompany.datasource") - Bibliotecas que carregam arquivos usando Java
FileInputStreamouPaths.get()
Essas operações não suportam leitura ou gravação em volumes do Catálogo Unity ou arquivos de espaço de trabalho usando caminhos de arquivo padrão, como /Volumes/my-catalog/my-schema/my-volume/my-file.csv. Se você precisar acessar arquivos de volume ou arquivos de espaço de trabalho de dependências JAR ou bibliotecas baseadas em JVM, copie os arquivos primeiro para calcular o armazenamento local usando Python ou %sh comandos, como %sh mv.. Não utilize %fs e dbutils.fs que utilize a JVM. Para acessar arquivos já copiados localmente, use comandos específicos do idioma, como Python shutil ou use %sh comandos. Se um arquivo precisar estar presente durante o início do cluster, use um script init para mover o arquivo primeiro. Consulte O que são scripts init?.
Preciso fornecer um esquema de URI para acessar dados?
Os caminhos de acesso a dados no Azure Databricks seguem um dos seguintes padrões:
caminhos no estilo URI incluem um esquema de URI. Para soluções de acesso a dados nativas do Databricks, os esquemas de URI são opcionais para a maioria dos casos de uso. Ao acessar diretamente os dados no armazenamento de objetos na nuvem, você deve fornecer o esquema de URI correto para o tipo de armazenamento.
caminhos no estilo POSIX fornecem acesso a dados relativos à raiz do controlador (
/). Os caminhos no estilo POSIX nunca exigem um esquema. Você pode usar volumes do Unity Catalog ou montagens DBFS para fornecer acesso no estilo POSIX aos dados no armazenamento de objetos na nuvem. Muitas estruturas de ML e outros módulos OSS Python requerem FUSE e só podem usar caminhos no estilo POSIX.
Observação
As operações de arquivo que exigem acesso a dados FUSE não podem acessar diretamente o armazenamento de objetos na nuvem usando URIs. O Databricks recomenda o uso de volumes do Unity Catalog para configurar o acesso a esses locais para o FUSE.
Na computação configurada com o modo de acesso dedicado (anteriormente modo de acesso de usuário único) e Databricks Runtime 14.3 e superior, o Scala suporta FUSE para volumes do Unity Catalog e arquivos de espaço de trabalho, exceto para subprocessos originários do Scala, como o comando Scala "cat /Volumes/path/to/file".!!.
Trabalhar com arquivos em volumes do Catálogo Unity
O Databricks recomenda o uso de volumes do Catálogo Unity para configurar o acesso a arquivos de dados não tabulares armazenados no armazenamento de objetos na nuvem. Para obter documentação completa sobre como gerenciar arquivos em volumes, incluindo instruções detalhadas e práticas recomendadas, consulte Trabalhar com arquivos em volumes do catálogo Unity.
Os exemplos a seguir mostram operações comuns usando diferentes ferramentas e interfaces:
| Ferramenta | Exemplo |
|---|---|
| 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ários do sistema de arquivos Databricks | dbutils.fs.ls("/Volumes/my_catalog/my_schema/my_volume/")%fs ls /Volumes/my_catalog/my_schema/my_volume/ |
| CLI do Databricks | databricks fs cp /path/to/local/file dbfs:/Volumes/my_catalog/my_schema/my_volume/ |
| Databricks REST API | POST https://<databricks-instance>/api/2.1/jobs/create{"name": "A multitask job", "tasks": [{..."libraries": [{"jar": "/Volumes/dev/environment/libraries/logging/Logging.jar"}],},...]} |
| Comandos shell Bash | %sh curl http://<address>/text.zip -o /Volumes/my_catalog/my_schema/my_volume/tmp/text.zip |
| Instalações de biblioteca | %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') |
| Python de código aberto | os.listdir('/Volumes/my_catalog/my_schema/my_volume/path/to/directory') |
Para obter informações sobre limitações de volumes e soluções alternativas, consulte Limitações de trabalhar com arquivos em volumes.
Trabalhar com arquivos de espaço de trabalho
Databricks ficheiros de espaço de trabalho são os ficheiros no espaço de trabalho, armazenados na conta de armazenamento do espaço de trabalho. Você pode usar arquivos de espaço de trabalho para armazenar e acessar arquivos como blocos de anotações, arquivos de código-fonte, arquivos de dados e outros ativos de espaço de trabalho.
Importante
Como os arquivos de espaço de trabalho têm restrições de tamanho, o Databricks recomenda armazenar apenas pequenos arquivos de dados aqui, principalmente para desenvolvimento e teste. Para obter recomendações sobre onde armazenar outros tipos de arquivo, consulte Tipos de arquivo.
| Ferramenta | Exemplo |
|---|---|
| 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ários do sistema de arquivos Databricks | dbutils.fs.ls("file:/Workspace/Users/<user-folder>/")%fs ls file:/Workspace/Users/<user-folder>/ |
| CLI do Databricks | databricks workspace list |
| Databricks REST API | POST https://<databricks-instance>/api/2.0/workspace/delete{"path": "/Workspace/Shared/code.py", "recursive": "false"} |
| Comandos shell Bash | %sh curl http://<address>/text.zip -o /Workspace/Users/<user-folder>/text.zip |
| Instalações de biblioteca | %pip install /Workspace/Users/<user-folder>/my_library.whl |
| Pandas | df = pd.read_csv('/Workspace/Users/<user-folder>/data.csv') |
| Python de código aberto | os.listdir('/Workspace/Users/<user-folder>/path/to/directory') |
Observação
O esquema file:/ é necessário ao trabalhar com Databricks Utilities, Apache Spark ou SQL.
Em espaços de trabalho onde a raiz e as montagens do DBFS estão desabilitadas, você também pode usar dbfs:/Workspace para acessar arquivos de espaço de trabalho com utilitários Databricks. Isso requer o Databricks Runtime 13.3 LTS ou superior. Consulte Desabilitar o acesso à raiz e montagens do DBFS em seu espaço de trabalho existente do Azure Databricks.
Para ver as limitações ao trabalhar com ficheiros de espaço de trabalho, consulte Limitações.
Para onde vão os arquivos de espaço de trabalho excluídos?
A exclusão de um arquivo de espaço de trabalho o envia para a lixeira. Você pode recuperar ou excluir permanentemente arquivos da lixeira usando a interface do usuário.
Consulte Excluir um objeto.
Trabalhar com ficheiros no armazenamento de objetos na nuvem
A Databricks recomenda o uso de volumes do Unity Catalog para configurar o acesso seguro a arquivos no armazenamento de objetos na nuvem. Você deve configurar permissões se optar por acessar dados diretamente no armazenamento de objetos na nuvem usando URIs. Consulte Volumes gerenciados e externos.
Os exemplos a seguir usam URIs para acessar dados no armazenamento de objetos na nuvem:
| Ferramenta | Exemplo |
|---|---|
| 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ários do sistema de arquivos 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/
|
| CLI do Databricks | Não suportado |
| Databricks REST API | Não suportado |
| Comandos shell Bash | Não suportado |
| Instalações de biblioteca | %pip install abfss://container-name@storage-account-name.dfs.core.windows.net/path/to/library.whl |
| Pandas | Não suportado |
| Python de código aberto | Não suportado |
Trabalhar com ficheiros em pontos de montagem DBFS e na raiz DBFS
Importante
Tanto a raiz do DBFS como as montagens de DBFS estão obsoletas e não são recomendadas pelo Databricks. Novas contas são criadas sem acesso a estas funcionalidades. O Databricks recomenda usar volumes do Unity Catalog, localizações externas ou ficheiros de espaço de trabalho em vez disso.
| Ferramenta | Exemplo |
|---|---|
| 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ários do sistema de arquivos Databricks | dbutils.fs.ls("/mnt/path")%fs ls /mnt/path |
| CLI do Databricks | databricks fs cp dbfs:/mnt/path/to/remote/file /path/to/local/file |
| Databricks REST API | POST https://<host>/api/2.0/dbfs/delete --data '{ "path": "/tmp/HelloWorld.txt" }' |
| Comandos shell Bash | %sh curl http://<address>/text.zip > /dbfs/mnt/tmp/text.zip |
| Instalações de biblioteca | %pip install /dbfs/mnt/path/to/my_library.whl |
| Pandas | df = pd.read_csv('/dbfs/mnt/path/to/data.csv') |
| Python de código aberto | os.listdir('/dbfs/mnt/path/to/directory') |
Observação
O esquema dbfs:/ é necessário ao trabalhar com a CLI do Databricks.
Trabalhar com ficheiros em armazenamento efémero anexados ao nó do controlador
O armazenamento efémero anexado ao nó controlador é um armazenamento em bloco com acesso a caminho baseado em POSIX integrado. Todos os dados armazenados neste local desaparecem quando um cluster é encerrado ou reiniciado.
| Ferramenta | Exemplo |
|---|---|
| Apache Spark | Não suportado |
| Spark SQL e Databricks SQL | Não suportado |
| Utilitários do sistema de arquivos Databricks | dbutils.fs.ls("file:/path")%fs ls file:/path |
| CLI do Databricks | Não suportado |
| Databricks REST API | Não suportado |
| Comandos shell Bash | %sh curl http://<address>/text.zip > /tmp/text.zip |
| Instalações de biblioteca | Não suportado |
| Pandas | df = pd.read_csv('/path/to/data.csv') |
| Python de código aberto | os.listdir('/path/to/directory') |
Observação
O esquema file:/ é necessário ao trabalhar com utilitários Databricks.
Mova dados do armazenamento efêmero para volumes
Você pode querer acessar dados baixados ou salvos em armazenamento efêmero usando o Apache Spark. Como o armazenamento efêmero é anexado ao driver e o Spark é um mecanismo de processamento distribuído, nem todas as operações podem acessar dados diretamente aqui. Suponha que seja necessário mover dados do sistema de ficheiros do driver para volumes do Unity Catalog. Nesse caso, você pode copiar arquivos usando comandos mágicos ou os utilitários Databricks, como nos seguintes exemplos:
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>
Recursos adicionais
Para obter informações sobre como carregar ficheiros locais ou transferir ficheiros da Internet para o Azure Databricks, consulte Carregar ficheiros para o Azure Databricks.