Trabalhar com arquivos no Databricks
Databricks tem várias utilidades e APIs para interagir com arquivos nos seguintes locais:
Unity Catalog volumes
workspace arquivos
cloud armazenamento de objetos
Montagens de DBFS e DBFS root
Armazenamento efêmero anexado ao nó do driver do cluster
Este artigo contém exemplos de interação com arquivos nesses locais para as seguintes ferramentas:
Apache Spark
Spark SQL e Databricks SQL
Databricks utilidades do sistema de arquivos (
dbutils.fs
ou%fs
)CLI do Databricks
API REST Databricks
Comando do shell Bash (
%sh
)NotebookA biblioteca com escopo de -instalações usando
%pip
Pandas
Utilitários de processamento e gerenciamento de arquivos OSS Python
Importante
As operações de arquivo que exigem acesso aos dados do FUSE não podem acessar diretamente o armazenamento de objetos do cloud usando URIs. A Databricks recomenda o uso de volumes do Unity Catalog para configurar o acesso a esses locais para o FUSE.
Scala oferece suporte ao FUSE para volumes Unity Catalog e arquivos workspace em compute configurados com Unity Catalog e modo de acesso compartilhado. Em compute configurado com o modo de acesso de usuário único e Databricks Runtime 14.3 e acima, Scala suporta FUSE para volumes Unity Catalog e arquivos workspace, exceto para subprocessos originados de Scala, como o comando Scala "cat /Volumes/path/to/file".!!
.
Preciso fornecer um esquema de URI para acessar os dados?
Os caminhos de acesso a dados em Databricks seguem um dos seguintes padrões:
Os caminhos no estilo URI incluem um esquema 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 cloud, o senhor deve fornecer o esquema URI correto para o tipo de armazenamento.
Os caminhos no estilo POSIX fornecem acesso a dados relativos à raiz do driver (
/
). Os caminhos no estilo POSIX nunca requerem um esquema. Você pode usar volumes do Unity Catalog ou montagens DBFS para fornecer acesso no estilo POSIX aos dados no armazenamento de objetos clouds . Muitas estruturas de ML e outros módulos OSS Python exigem FUSE e só podem usar caminhos no estilo POSIX.
Trabalhar com arquivos em volumes do Unity Catalog
Databricks recomenda o uso de volumes Unity Catalog para configurar o acesso a arquivos de dados não tabulares armazenados no armazenamento de objetos cloud. Consulte O que são volumes do Unity Catalog?
Ferramenta |
Exemplo |
---|---|
Apache Spark |
|
Spark SQL e Databricks SQL |
|
Sistema de arquivos databricks russos |
|
CLI do Databricks |
|
API REST Databricks |
|
Comando shell bash |
|
Instalações de biblioteca |
|
Pandas |
|
OSS Python |
|
Observação
O esquema dbfs:/
é necessário ao trabalhar com a CLI da Databricks.
Limitações de volumes
Os volumes têm as seguintes limitações:
Não há suporte para gravações com anexação direta ou não sequenciais (aleatórias), como a gravação de arquivos Zip e Excel. Para cargas de trabalho de apêndice direto ou de gravação aleatória, execute primeiro as operações em um disco local e, em seguida, copie os resultados para os volumes do Unity Catalog. Por exemplo:
# 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')
Não há suporte para arquivos esparsos. Para copiar arquivos esparsos, use
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
Trabalhar com arquivos do espaço de trabalho
Databricks workspace são os arquivos em um workspace que não são do Notebook. O senhor pode usar os arquivos workspace para armazenar e acessar dados e outros arquivos salvos no Notebook e em outros workspace ativos. Como os arquivos do site workspace têm restrições de tamanho, o site Databricks recomenda armazenar aqui apenas arquivos de dados pequenos, principalmente para desenvolvimento e testes.
Ferramenta |
Exemplo |
---|---|
Apache Spark |
|
Spark SQL e Databricks SQL |
|
Sistema de arquivos databricks russos |
|
CLI do Databricks |
|
API REST Databricks |
|
Comando shell bash |
|
Instalações de biblioteca |
|
Pandas |
|
OSS Python |
|
Observação
O esquema file:/
é necessário ao trabalhar com Databricks russas, Apache Spark ou SQL.
Limitações dos arquivos do espaço de trabalho
workspace têm as seguintes limitações:
workspace o tamanho do arquivo é limitado a 500 MB. As operações que tentarem fazer download ou criar arquivos maiores que esse limite falharão.
Se o seu fluxo de trabalho usar código-fonte localizado em um repositório Git remoto, não será possível gravar no diretório atual ou usar um caminho relativo. Grave dados em outras opções de localização.
Você não pode usar o comando
git
ao salvar em arquivos workspace . A criação de diretórios.git
não é permitida em arquivos workspace .A leitura de arquivos workspace usando o executor Spark (como
spark.read.format("csv").load("file:/Workspace/Users/<user-folder>/data.csv")
) não é compatível com o serverless compute.executor não pode gravar em arquivos workspace .
não há suporte para links simbólicos.
workspace Os arquivos não podem ser acessados a partir de funções definidas pelo usuário (UDFs) em clusters com modo de acesso compartilhado em Databricks Runtime 14.2 e abaixo.
Para onde vão os arquivos excluídos do workspace?
A exclusão de um arquivo workspace o envia para a lixeira. O senhor pode recuperar ou excluir permanentemente arquivos da lixeira usando a interface do usuário.
Consulte Excluir um objeto.
Trabalhe com arquivos no armazenamento de objetos clouds
Databricks recomenda o uso de volumes Unity Catalog para configurar o acesso seguro a arquivos no armazenamento de objetos cloud. O senhor deve configurar as permissões se optar por acessar diretamente os dados no armazenamento de objetos do cloud usando URIs. Consulte gerenciar locais externos, tabelas externas e volumes externos.
Os exemplos a seguir usam URIs para acessar dados no armazenamento de objetos clouds :
Ferramenta |
Exemplo |
---|---|
Apache Spark |
|
Spark SQL e Databricks SQL |
|
Sistema de arquivos databricks russos |
|
CLI do Databricks |
Não suportado |
API REST Databricks |
Não suportado |
Comando shell bash |
Não suportado |
Instalações de biblioteca |
|
Pandas |
Não suportado |
OSS Python |
Não suportado |
Observação
cloud O armazenamento de objetos não é compatível com a passagem de credenciais.
Trabalhe com arquivos em montagens DBFS e DBFS root
As montagens DBFS não podem ser protegidas usando o Unity Catalog e não são mais recomendadas pela Databricks. Os dados armazenados no site DBFS root podem ser acessados por todos os usuários no site workspace. Databricks O senhor não recomenda o armazenamento de códigos ou dados confidenciais ou de produção no site DBFS root. Consulte O que é DBFS?
Ferramenta |
Exemplo |
---|---|
Apache Spark |
|
Spark SQL e Databricks SQL |
|
Sistema de arquivos databricks russos |
|
CLI do Databricks |
|
API REST Databricks |
|
Comando shell bash |
|
Instalações de biblioteca |
|
Pandas |
|
OSS Python |
|
Observação
O esquema dbfs:/
é necessário ao trabalhar com a CLI da Databricks.
Trabalhar com arquivos em armazenamento temporário anexado ao nó do driver
O armazenamento efêmero anexado ao nó do driver é um armazenamento em bloco com acesso integrado ao caminho baseado em POSIX. Todos os dados armazenados nesse local desaparecem quando um cluster é encerrado ou reiniciado.
Ferramenta |
Exemplo |
---|---|
Apache Spark |
Não suportado |
Spark SQL e Databricks SQL |
Não suportado |
Sistema de arquivos databricks russos |
|
CLI do Databricks |
Não suportado |
API REST Databricks |
Não suportado |
Comando shell bash |
|
Instalações de biblioteca |
Não suportado |
Pandas |
|
OSS Python |
|
Observação
O esquema file:/
é necessário ao trabalhar com Databricks russas.
Mova dados do armazenamento efêmero para volumes
O senhor pode querer acessar downloads de dados ou salvos em armazenamento efêmero usando 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 diretamente os dados aqui. Suponha que o senhor precise mover dados do sistema de arquivos do driver para volumes do Unity Catalog. Nesse caso, o senhor pode copiar arquivos usando o magic comando ou o Databricks utilidades, como nos exemplos a seguir:
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>
Outros recursos
Para obter informações sobre o upload de arquivos locais ou downloads de arquivos da Internet para Databricks, consulte upload files to Databricks.