FileStore
Importante
Esta documentação foi desativada e pode não ser atualizada. Os produtos, serviços ou tecnologias mencionados neste conteúdo não são mais suportados.
FileStore é uma pasta especial dentro do DBFS onde você pode salvar arquivos e tê-los acessíveis ao seu navegador da web. Você pode usar FileStore para:
- Salve arquivos, como imagens e bibliotecas, que podem ser acessados em HTML e JavaScript quando você chama
displayHTML
o . - Guarde os ficheiros de saída que pretende transferir para o ambiente de trabalho local.
- Carregue CSVs e outros arquivos de dados de sua área de trabalho local para processar no Databricks.
Quando você usa determinados recursos, o Azure Databricks coloca arquivos nas seguintes pastas em FileStore:
/FileStore/jars
- contém bibliotecas de espaços de trabalho legadas carregadas. Se você excluir arquivos nessa pasta, as bibliotecas que fazem referência a esses arquivos em seu espaço de trabalho podem não funcionar mais./FileStore/tables
- contém os arquivos que você importa usando a interface do usuário. Se eliminar ficheiros nesta pasta, as tabelas que criou a partir desses ficheiros poderão deixar de estar acessíveis.
Importante
As bibliotecas podem ser instaladas a partir do DBFS ao usar o Databricks Runtime 14.3 LTS e inferior. No entanto, qualquer usuário do espaço de trabalho pode modificar arquivos de biblioteca armazenados no DBFS. Para melhorar a segurança das bibliotecas em um espaço de trabalho do Azure Databricks, o armazenamento de arquivos de biblioteca na raiz DBFS é preterido e desabilitado por padrão no Databricks Runtime 15.1 e superior. Consulte O armazenamento de bibliotecas na raiz DBFS foi preterido e desativado por padrão.
Em vez disso, o Databricks recomenda carregar todas as bibliotecas, incluindo bibliotecas Python, arquivos JAR e conectores Spark, para arquivos de espaço de trabalho ou volumes do Catálogo Unity, ou usar repositórios de pacotes de biblioteca. Se sua carga de trabalho não oferecer suporte a esses padrões, você também poderá usar bibliotecas armazenadas no armazenamento de objetos na nuvem.
Salvar um arquivo no FileStore
Você pode usar dbutils.fs.put
para gravar arquivos de texto arbitrários no /FileStore
diretório no DBFS:
dbutils.fs.put("/FileStore/my-stuff/my-file.txt", "This is the actual text that will be saved to disk. Like a 'Hello world!' example")
A seguir, substitua <databricks-instance>
pela URL do espaço de trabalho da sua implantação do Azure Databricks.
Os arquivos armazenados em /FileStore
podem ser acessados em seu navegador da Web em https://<databricks-instance>/files/<path-to-file>?o=######
. Por exemplo, o arquivo em /FileStore/my-stuff/my-file.txt
que você armazenou está acessível onde https://<databricks-instance>/files/my-stuff/my-file.txt?o=######
o número depois o=
é o mesmo que no seu URL.
Nota
Você também pode usar as interfaces de upload de arquivo DBFS para colocar arquivos no /FileStore
diretório. Consulte Explorar e criar tabelas no DBFS.
Incorporar imagens estáticas em blocos de notas
Você pode usar o files/
local para incorporar imagens estáticas em seus blocos de anotações:
displayHTML("<img src ='files/image.jpg'>")
ou Sintaxe de importação de imagem Markdown:
%md
![my_test_image](files/image.jpg)
Você pode carregar imagens estáticas usando a API DBFS e a biblioteca HTTP Python de solicitações . No exemplo a seguir:
- Substitua
<databricks-instance>
pela URL do espaço de trabalho da sua implantação do Azure Databricks. - Substitua
<token>
pelo valor do seu token de acesso pessoal. - Substitua
<image-dir>
pelo local ondeFileStore
você deseja carregar os arquivos de imagem.
Nota
Como prática recomendada de segurança, quando você se autentica com ferramentas, sistemas, scripts e aplicativos automatizados, o Databricks recomenda que você use tokens de acesso pessoal pertencentes a entidades de serviço em vez de usuários do espaço de trabalho. Para criar tokens para entidades de serviço, consulte Gerenciar tokens para uma entidade de serviço.
import requests
import json
import os
TOKEN = '<token>'
headers = {'Authorization': 'Bearer %s' % TOKEN}
url = "https://<databricks-instance>/api/2.0"
dbfs_dir = "dbfs:/FileStore/<image-dir>/"
def perform_query(path, headers, data={}):
session = requests.Session()
resp = session.request('POST', url + path, data=json.dumps(data), verify=True, headers=headers)
return resp.json()
def mkdirs(path, headers):
_data = {}
_data['path'] = path
return perform_query('/dbfs/mkdirs', headers=headers, data=_data)
def create(path, overwrite, headers):
_data = {}
_data['path'] = path
_data['overwrite'] = overwrite
return perform_query('/dbfs/create', headers=headers, data=_data)
def add_block(handle, data, headers):
_data = {}
_data['handle'] = handle
_data['data'] = data
return perform_query('/dbfs/add-block', headers=headers, data=_data)
def close(handle, headers):
_data = {}
_data['handle'] = handle
return perform_query('/dbfs/close', headers=headers, data=_data)
def put_file(src_path, dbfs_path, overwrite, headers):
handle = create(dbfs_path, overwrite, headers=headers)['handle']
print("Putting file: " + dbfs_path)
with open(src_path, 'rb') as local_file:
while True:
contents = local_file.read(2**20)
if len(contents) == 0:
break
add_block(handle, b64encode(contents).decode(), headers=headers)
close(handle, headers=headers)
mkdirs(path=dbfs_dir, headers=headers)
files = [f for f in os.listdir('.') if os.path.isfile(f)]
for f in files:
if ".png" in f:
target_path = dbfs_dir + f
resp = put_file(src_path=f, dbfs_path=target_path, overwrite=True, headers=headers)
if resp == None:
print("Success")
else:
print(resp)
Dimensionar imagens estáticas
Para dimensionar o tamanho de uma imagem que você salvou no DBFS, copie a imagem para /FileStore
e, em seguida, redimensione usando parâmetros de imagem em displayHTML
:
dbutils.fs.cp('dbfs:/user/experimental/MyImage-1.png','dbfs:/FileStore/images/')
displayHTML('''<img src="files/images/MyImage-1.png" style="width:600px;height:600px;">''')
Exemplo de bloco de notas: utilizar uma biblioteca JavaScript
Este bloco de anotações mostra como usar FileStore para conter uma biblioteca JavaScript.