FileStore
Ważne
Ta dokumentacja została wycofana i może nie zostać zaktualizowana. Produkty, usługi lub technologie wymienione w tej zawartości nie są już obsługiwane.
FileStore to specjalny folder w systemie plików DBFS , w którym można zapisywać pliki i mieć je dostępne w przeglądarce internetowej. Możesz użyć magazynu plików, aby:
- 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 pulpit lokalny.
- Przekaż pliki CSV i inne pliki danych z pulpitu lokalnego do przetworzenia w usłudze 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 starsze biblioteki obszarów roboczych. 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.
Ważne
Biblioteki można instalować z systemu plików DBFS podczas korzystania z środowiska Databricks Runtime 14.3 LTS i poniżej. Jednak każdy użytkownik obszaru roboczego może modyfikować pliki biblioteki przechowywane w systemie plików DBFS. Aby zwiększyć bezpieczeństwo bibliotek w obszarze roboczym usługi Azure Databricks, przechowywanie plików bibliotek w katalogu głównym systemu plików DBFS jest domyślnie przestarzałe i wyłączone w środowisku Databricks Runtime 15.1 lub nowszym. Zobacz Przechowywanie bibliotek w katalogu głównym systemu plików DBFS jest domyślnie przestarzałe i wyłączone.
Zamiast tego usługa Databricks zaleca przekazywanie wszystkich bibliotek, w tym bibliotek języka Python, plików JAR i łączników platformy Spark, do plików obszaru roboczego lub woluminów wykazu aparatu Unity lub przy użyciu repozytoriów pakietów biblioteki. Jeśli obciążenie nie obsługuje tych wzorców, możesz również użyć bibliotek przechowywanych w magazynie obiektów w chmurze.
Zapisywanie pliku w magazynie plików
Za pomocą dbutils.fs.put
polecenia można zapisywać dowolne pliki tekstowe w katalogu w systemie /FileStore
plików 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")
W poniższej sekcji zastąp <databricks-instance>
ciąg 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 pod adresem, w https://<databricks-instance>/files/my-stuff/my-file.txt?o=######
którym liczba po o=
jest taka sama jak w adresie URL.
Uwaga
Możesz również użyć interfejsów przekazywania plików DBFS, aby umieścić pliki w /FileStore
katalogu. Zobacz Eksplorowanie i tworzenie tabel w systemie plików DBFS.
Osadzanie obrazów statycznych w notesach
Lokalizację można użyć do osadzania files/
obrazów statycznych w notesach:
displayHTML("<img src ='files/image.jpg'>")
lub składnia importowania obrazów markdown:
%md
![my_test_image](files/image.jpg)
Obrazy statyczne można przekazywać przy użyciu interfejsu API DBFS i biblioteki HTTP żądań języka Python. W poniższym przykładzie:
- Zastąp ciąg
<databricks-instance>
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.
Uwaga
Najlepszym rozwiązaniem w zakresie zabezpieczeń w przypadku uwierzytelniania za pomocą zautomatyzowanych narzędzi, systemów, skryptów i aplikacji usługa Databricks zaleca używanie osobistych tokenów dostępu należących do jednostek usługi zamiast użytkowników obszaru roboczego. Aby utworzyć tokeny dla jednostek usługi, zobacz Zarządzanie tokenami dla jednostki usługi.
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
, 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;">''')
Przykład notesu: używanie biblioteki Języka JavaScript
W tym notesie pokazano, jak używać magazynu plików do przechowywania biblioteki JavaScript.