Share via


FileStore

Fontos

Ez a dokumentáció ki lett állítva, és lehet, hogy nem frissül. A tartalomban említett termékek, szolgáltatások vagy technológiák már nem támogatottak.

A FileStore egy speciális mappa a DBFS-ben, ahol mentheti a fájlokat, és elérhetővé teheti őket a webböngészőben. A FileStore használatával:

  • Mentsen olyan fájlokat, például képeket és kódtárakat, amelyek a HTML-ben és a JavaScriptben érhetők el híváskor displayHTML.
  • Mentse a helyi asztalra letölteni kívánt kimeneti fájlokat.
  • Töltsön fel CSV-ket és más adatfájlokat a helyi asztalról a Databricksen való feldolgozáshoz.

Bizonyos funkciók használatakor az Azure Databricks a fájlokat a következő mappákba helyezi a FileStore alatt:

  • /FileStore/jars - a feltöltött örökölt munkaterület-kódtárakat tartalmazza. Ha törli a mappában lévő fájlokat, előfordulhat, hogy a munkaterületen ezekre a fájlokra hivatkozó tárak már nem működnek.
  • /FileStore/tables- a felhasználói felületen importált fájlokat tartalmazza. Ha törli a fájlokat ebben a mappában, előfordulhat, hogy az ezekből a fájlokból létrehozott táblák már nem lesznek elérhetők.

Fontos

A kódtárak a Databricks Runtime 14.3 LTS és az alábbi Databricks Runtime használatakor telepíthetők a DBFS-ből. A munkaterület bármely felhasználója módosíthatja azonban a DBFS-ben tárolt kódtárfájlokat. Az Azure Databricks-munkaterületen lévő kódtárak biztonságának javítása érdekében a tárfájlok dbFS-gyökérben való tárolása alapértelmezés szerint elavult és le van tiltva a Databricks Runtime 15.0-s és újabb verzióiban. Lásd: A tárak tárolása a DBFS-gyökérben alapértelmezés szerint elavult és le van tiltva.

Ehelyett a Databricks azt javasolja , hogy töltse fel az összes tárat, beleértve a Python-kódtárakat, a JAR-fájlokat és a Spark-összekötőket, a munkaterületi fájlokba vagy a Unity Catalog-kötetekbe, vagy tárcsomag-adattárak használatával. Ha a számítási feladat nem támogatja ezeket a mintákat, a felhőobjektum-tárolóban tárolt kódtárakat is használhatja.

Fájl mentése a FileStore-ba

dbutils.fs.put Tetszőleges szövegfájlokat írhat a könyvtárba a /FileStore DBFS-ben:

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")

Az alábbiakban cserélje le <databricks-instance> az Azure Databricks-üzemelő példány munkaterületi URL-címét .

A tárolt /FileStore fájlok a webböngészőben érhetők el a következő címen https://<databricks-instance>/files/<path-to-file>?o=######: . A tárolt fájl például ott érhető elhttps://<databricks-instance>/files/my-stuff/my-file.txt?o=######, ahol az utána o= lévő /FileStore/my-stuff/my-file.txt szám megegyezik az URL-címével.

Feljegyzés

A DBFS fájlfeltöltési felületekkel fájlokat is elhelyezhet a /FileStore könyvtárban. Lásd: Táblák felfedezése és létrehozása a DBFS-ben.

Statikus képek beágyazása jegyzetfüzetekbe

A hely használatával files/ statikus képeket ágyazhat be a jegyzetfüzetekbe:

displayHTML("<img src ='files/image.jpg'>")

vagy Markdown-képimportálási szintaxis:

%md
![my_test_image](files/image.jpg)

Statikus képeket a DBFS API-val és a kérések Python HTTP-kódtárával tölthet fel. Az alábbi példában:

Feljegyzés

Ajánlott biztonsági eljárásként, ha automatizált eszközökkel, rendszerekkel, szkriptekkel és alkalmazásokkal hitelesít, a Databricks azt javasolja, hogy munkaterület-felhasználók helyett a szolgáltatásnevekhez tartozó személyes hozzáférési jogkivonatokat használja. A szolgáltatásnevek jogkivonatainak létrehozásáról a szolgáltatásnév jogkivonatainak kezelése című témakörben olvashat.

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)

Statikus képek méretezése

A DBFS-be mentett kép méretének skálázásához másolja a képet a következő fájlba, majd méretezze át a következő /FileStore képparaméterekkel 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;">''')

Példa jegyzetfüzetre: JavaScript-kódtár használata

Ez a jegyzetfüzet bemutatja, hogyan használható a FileStore JavaScript-kódtárak használatára.

DBFS FileStore példajegyzetfüzet

Jegyzetfüzet beszerzése