FileStore
FileStore to specjalny folder w systemie plików Databricks (DBFS), w którym można zapisywać pliki i mieć je dostępne w przeglądarce internetowej. Możesz użyć funkcji FileStore do:
- Zapisz pliki, takie jak obrazy i biblioteki, które są dostępne w językach HTML i JavaScript podczas wywoływania metody
displayHTML
. - Zapisz pliki wyjściowe, które chcesz pobrać na komputer lokalny.
- Przekaż woluminy CSV i inne pliki danych z pulpitu lokalnego do przetworzenia na Databricks.
W przypadku korzystania z niektórych funkcji usługa Azure Databricks umieszcza pliki w następujących folderach w obszarze FileStore:
/FileStore/jars
— zawiera przekazane biblioteki. Jeśli usuniesz pliki w tym folderze, biblioteki odwołujące się do tych plików w obszarze roboczym mogą przestać działać./FileStore/tables
— zawiera pliki importowane przy użyciu interfejsu użytkownika. Jeśli usuniesz pliki w tym folderze, tabele utworzone na podstawie tych plików mogą nie być już dostępne./FileStore/plots
— zawiera obrazy utworzone w notesach podczas wywoływaniadisplay()
obiektu wykresu języka Python lub R, takich jakggplot
lubmatplotlib
wykres. W przypadku usunięcia plików w tym folderze może być konieczne ponowne wygenerowanie tych wykresów w notesach odwołujących się do nich. Aby uzyskać więcej informacji, zobacz Biblioteki Matplotlib i ggplot2./FileStore/import-stage
— zawiera pliki tymczasowe utworzone podczas importowania notesów lub Databricks plików archiwów. Te pliki tymczasowe znikają po zakończeniu importowania notesu.
Zapisywanie pliku w magazynie plików
Aby zapisać plik w magazynie plików, umieść go w katalogu w systemie /FileStore
plików DBFS:
dbutils.fs.put("/FileStore/my-stuff/my-file.txt", "Contents of my file")
W poniższym miejscu zastąp <databricks-instance>
element adresem URL obszaru roboczego wdrożenia usługi Azure Databricks.
Pliki przechowywane w /FileStore
programie są dostępne w przeglądarce internetowej pod adresem https://<databricks-instance>/files/<path-to-file>?o=######
. Na przykład plik przechowywany w pliku /FileStore/my-stuff/my-file.txt
jest dostępny w lokalizacji, w https://<databricks-instance>/files/my-stuff/my-file.txt?o=######
której liczba po o=
jest taka sama jak w adresie URL.
Uwaga
Można również użyć interfejsów przekazywania plików DBFS, aby umieścić pliki w /FileStore
katalogu. Zobacz Databricks interfejsu wiersza polecenia.
Osadzanie obrazów statycznych w notesach
Lokalizację files/
można użyć do osadzania obrazów statycznych w notesach:
displayHTML("<img src ='files/image.jpg'>")
lub składnia importu obrazów markdown:
%md

Obrazy statyczne można przekazywać przy użyciu dokumentacji interfejsu API REST systemu plików DBFS Databricks i żądań biblioteki HTTP języka Python. W poniższym przykładzie:
- Zastąp
<databricks-instance>
element adresem URL obszaru roboczego wdrożenia usługi Azure Databricks. - Zastąp
<token>
ciąg wartością osobistego tokenu dostępu. - Zastąp
<image-dir>
element lokalizacją, wFileStore
której chcesz przekazać pliki obrazów.
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)
Skalowanie obrazów statycznych
Aby skalować rozmiar obrazu zapisanego w systemie plików DBFS, skopiuj obraz do /FileStore
pliku , a następnie zmień rozmiar przy użyciu parametrów obrazu w pliku 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;">''')
Korzystanie z biblioteki Języka JavaScript
W tym notesie pokazano, jak używać funkcji FileStore do przechowywania biblioteki Języka JavaScript.