Partilhar via


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 displayHTMLo .
  • 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 onde FileStore 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.

Bloco de anotações de exemplo do DBFS FileStore

Obter o bloco de notas