FileStore
Viktigt!
Den här dokumentationen har dragits tillbaka och kanske inte uppdateras. De produkter, tjänster eller tekniker som nämns i det här innehållet stöds inte längre.
FileStore är en särskild mapp i DBFS där du kan spara filer och få dem tillgängliga för webbläsaren. Du kan använda FileStore för att:
- Spara filer, till exempel bilder och bibliotek, som är tillgängliga i HTML och JavaScript när du anropar
displayHTML
. - Spara utdatafiler som du vill ladda ned till ditt lokala skrivbord.
- Ladda upp CSV:er och andra datafiler från ditt lokala skrivbord för att bearbeta på Databricks.
När du använder vissa funktioner placerar Azure Databricks filer i följande mappar under FileStore:
/FileStore/jars
– innehåller uppladdade äldre arbetsytebibliotek. Om du tar bort filer i den här mappen kanske bibliotek som refererar till dessa filer på arbetsytan inte längre fungerar./FileStore/tables
– innehåller de filer som du importerar med hjälp av användargränssnittet. Om du tar bort filer i den här mappen kanske tabeller som du skapade från dessa filer inte längre är tillgängliga.
Viktigt!
Bibliotek kan installeras från DBFS när du använder Databricks Runtime 14.3 LTS och nedan. Alla arbetsyteanvändare kan dock ändra biblioteksfiler som lagras i DBFS. För att förbättra säkerheten för bibliotek på en Azure Databricks-arbetsyta är lagring av biblioteksfiler i DBFS-roten inaktuell och inaktiverad som standard i Databricks Runtime 15.1 och senare. Se Lagra bibliotek i DBFS-roten är inaktuell och inaktiverad som standard.
I stället rekommenderar Databricks att du laddar upp alla bibliotek, inklusive Python-bibliotek, JAR-filer och Spark-anslutningsappar, till arbetsytefiler eller Unity Catalog-volymer eller använder bibliotekspaketdatabaser. Om din arbetsbelastning inte stöder dessa mönster kan du även använda bibliotek som lagras i molnobjektlagring.
Spara en fil i FileStore
Du kan använda dbutils.fs.put
för att skriva godtyckliga textfiler till /FileStore
katalogen i 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")
I följande ersätter du <databricks-instance>
med arbetsytans URL för din Azure Databricks-distribution.
Filer som lagras i /FileStore
är tillgängliga i webbläsaren på https://<databricks-instance>/files/<path-to-file>?o=######
. Filen som du lagrade i /FileStore/my-stuff/my-file.txt
är till exempel tillgänglig där https://<databricks-instance>/files/my-stuff/my-file.txt?o=######
talet efter o=
är detsamma som i url:en.
Kommentar
Du kan också använda DBFS-filuppladdningsgränssnitten för att placera filer i /FileStore
katalogen. Se Utforska och skapa tabeller i DBFS.
Bädda in statiska bilder i notebook-filer
Du kan använda platsen files/
för att bädda in statiska bilder i dina notebook-filer:
displayHTML("<img src ='files/image.jpg'>")
eller Markdown-bildimportsyntax:
%md
![my_test_image](files/image.jpg)
Du kan ladda upp statiska avbildningar med hjälp av DBFS-API:et och python HTTP-biblioteket för begäranden. I följande exempel:
- Ersätt
<databricks-instance>
med arbetsytans URL för din Azure Databricks-distribution. - Ersätt
<token>
med värdet för din personliga åtkomsttoken. - Ersätt
<image-dir>
med platsenFileStore
där du vill ladda upp bildfilerna.
Kommentar
När du autentiserar med automatiserade verktyg, system, skript och appar rekommenderar Databricks att du använder personliga åtkomsttoken som tillhör tjänstens huvudnamn i stället för arbetsyteanvändare. Information om hur du skapar token för tjänstens huvudnamn finns i Hantera token för tjänstens huvudnamn.
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)
Skala statiska bilder
Om du vill skala storleken på en bild som du har sparat i DBFS kopierar du bilden till /FileStore
och ändrar sedan storlek med hjälp av bildparametrar i 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;">''')
Notebook-exempel: Använda ett JavaScript-bibliotek
Den här notebook-filen visar hur du använder FileStore för att innehålla ett JavaScript-bibliotek.