FileStore
Внимание
Поддержка этой документации прекращена, она может больше не обновляться. Продукты, службы или технологии, упомянутые в этом контенте, больше не поддерживаются.
FileStore — это специальная папка в DBFSwhere вы можете сохранить файлы и предоставить им доступ к веб-браузеру. FileStore можно использовать в следующих целях:
- Сохранение файлов, например, изображений и библиотек, доступных в HTML и JavaScript при вызове
displayHTML
. - Сохраните выходные файлы, которые необходимо загрузить на локальный рабочий стол.
- Отправка CSV-файлов и других файлов данных с локального рабочего стола для обработки в Databricks.
При использовании некоторых функций Azure Databricks помещает файлы в следующие папки в FileStore:
-
/FileStore/jars
— содержит устаревшие библиотеки рабочей области. Если удалить файлы в этой папке, то библиотеки, которые ссылаются на эти файлы в рабочей области, могут перестать работать. -
/FileStore/tables
— содержит файлы, импортируемые с помощью пользовательского интерфейса. Если удалить файлы в этой папке, tables, созданные из этих файлов, больше не будут доступны.
Внимание
Библиотеки можно установить из DBFS при использовании Databricks Runtime 14.3 LTS и ниже. Однако любой пользователь рабочей области может изменять файлы библиотеки, хранящиеся в DBFS. Чтобы повысить безопасность библиотек в рабочей области Azure Databricks, хранение файлов библиотек в корне DBFS устарело и отключено по умолчанию в Databricks Runtime 15.1 и выше. См . статью "Хранение библиотек в корневом каталоге DBFS" не рекомендуется и отключается по умолчанию.
Вместо этого Databricks рекомендует загружать все библиотеки, включая библиотеки Python, JAR-файлы и соединители Spark, в файлы рабочей области или в Unity Catalogvolumes, или использовать репозитории пакетов библиотек. Если рабочая нагрузка не поддерживает эти шаблоны, можно также использовать библиотеки, хранящиеся в облачном хранилище объектов.
Сохранение файла в FileStore
Вы можете использовать dbutils.fs.put
для записи произвольных текстовых файлов в каталог /FileStore
в 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")
В следующих примерах замените <databricks-instance>
URL-адресом рабочей области развертывания Azure Databricks.
Файлы, хранящиеся в /FileStore
, доступны в веб-браузере по адресу https://<databricks-instance>/files/<path-to-file>?o=######
. Например, файл, хранящийся в /FileStore/my-stuff/my-file.txt
, доступен по https://<databricks-instance>/files/my-stuff/my-file.txt?o=######
where число после o=
совпадает с URL-адресом.
Примечание.
Для размещения файлов в каталоге /FileStore
можно также использовать интерфейсы отправки файлов DBFS. См. статью Изучение и создание объектов tables в DBFS.
Внедрение статических изображений в записные книжки
Можно использовать расположение files/
для внедрения статических изображений в записные книжки:
displayHTML("<img src ='files/image.jpg'>")
или синтаксис импорта изображений Markdown:
%md

Пример использования Markdown
Например, предположим, что в FileStore есть файл изображения логотипа Databricks:
dbfs ls dbfs:/FileStore/
databricks-logo-mobile.png
При включении следующего кода в ячейку Markdown изображение отображается в ячейке:
изображение
Пример отрисовки:
Пример использования API DBFS и запросов к библиотеке HTTP Python
Статические образы можно отправлять с помощью API DBFS и запросов http-библиотеки Python. В следующем примере :
- Замените
<databricks-instance>
URL-адресом рабочей области для развертывания Azure Databricks. - Замена
<token>
на значение личного маркера доступа. - Замените
<image-dir>
на место вFileStore
where, куда вы хотите загрузить файлы изображений.
Примечание.
В качестве рекомендации по обеспечению безопасности при проверке подлинности с помощью автоматизированных средств, систем, сценариев и приложений Databricks рекомендуется использовать личные маркеры доступа, принадлежащие субъектам-службам, а не пользователям рабочей области. Сведения о создании маркеров для субъектов-служб см. в разделе "Управление маркерами" для субъекта-службы.
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)
Масштабирование статических изображений
Чтобы масштабировать размер изображения, сохраненного в DBFS, скопируйте изображение в /FileStore
, а затем измените размер изображения с помощью parameters в 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;">''')
Пример записной книжки: использование библиотеки JavaScript
В этой записной книжке показано, как использовать хранилище файлов для хранения библиотеки JavaScript.