ファイルストア
このドキュメントは廃止されており、更新されない可能性があります。 このコンテンツに記載されている製品、サービス、またはテクノロジはサポートされなくなりました。
FileStoreは、 DBFS 内の特別なフォルダで、ファイルを保存してWebブラウザからアクセスできるようにすることができます。 FileStore を使用すると、次のことができます。
displayHTML
を呼び出すときにHTMLおよびJavaScript内でアクセスできる画像やライブラリなどのファイルを保存する- ダウンロードする出力ファイルをローカル・デスクトップに保存する
- CSVやその他のデータファイルをローカル・デスクトップからアップロードして Databricksで処理する
特定の機能を使用する際に、DatabricksはFileStore内の次のフォルダにファイルを配置します。
/FileStore/jars
- アップロードされた従来のワークスペースライブラリが含まれています。 このフォルダ内のファイルを削除すると、ワークスペース内でこれらのファイルを参照するライブラリが機能しなくなる可能性があります。/FileStore/tables
- UI を使用してインポートしたファイルが含まれています。 このフォルダ内のファイルを削除すると、これらのファイルから作成したテーブルにアクセスできなくなる可能性があります。
ライブラリは、Databricks Runtime 14.3 LTS 以前を使用している場合は DBFS からインストールできます。 ただし、ワークスペース ユーザーは誰でも DBFS に格納されているライブラリ ファイルを変更できます。 Databricksワークスペースでのライブラリのセキュリティを向上させるために、DBFSルートへのライブラリファイルの保存は、Databricks Runtime 15.1 以降のデフォルトによって非推奨になり、無効になっています。「 Storing Library in DBFSRoutes is deprecated and disabled by デフォルト」を参照してください。
Databricks代わりに、 ライブラリ、 ファイル、 コネクタを含むすべてのライブラリをワークスペースPython JARSparkファイルまたは ボリュームにアップロードするかUnity Catalog 、ライブラリ パッケージ リポジトリを使用することをお勧めします。ワークロードがこれらのパターンをサポートしていない場合は、クラウド・オブジェクト・ストレージに保管されているライブラリーも使用できます。
FileStore へのファイルの保存
dbutils.fs.put
を使用して、DBFSの /FileStore
ディレクトリに任意のテキストファイルを書き込むことができます。
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>
を Databricks デプロイの ワークスペース URL に置き換えます。
/FileStore
に保存されたファイルは、 https://<databricks-instance>/files/
のウェブブラウザからアクセスできます。例えば、 /FileStore/my-stuff/my-file.txt
に保存したファイルは https://<databricks-instance>/files/my-stuff/my-file.txt
からアクセスできます。
ただし、デプロイメントURLに?o=
が含まれる場合(例:https://<databricks-instance>/?o=6280049833385130
)は、https://<databricks-instance>/files/my-stuff/my-file.txt
を https://<databricks-instance>/files/my-stuff/my-file.txt?o=######
で置き換えます。o=
に続く数字はURLに含まれるものと同じになります。
DBFS ファイル・アップロード・インターフェースを使用して、 /FileStore
ディレクトリーにファイルを配置することもできます。 DBFS でのテーブルの探索と作成を参照してください。
ノートブックに静止画像を埋め込む
files/
の場所を使用して、静止画像をノートブックに埋め込むことができます。
displayHTML("<img src ='files/image.jpg'>")
または、Markdown画像インポート構文を使用します。
%md

Markdown の使用例
たとえば、FileStoreにDatabricksのロゴ画像ファイルがあるとします。
dbfs ls dbfs:/FileStore/
databricks-logo-mobile.png
Markdown セルに次のコードを含めると、セルに画像がレンダリングされます。
レンダリングされた例:
DBFS API とリクエスト Python HTTP ライブラリの使用例
静的画像は、 DBFS API と リクエスト Python HTTP ライブラリを使用してアップロードできます。 次の例では、次のようになります。
<databricks-instance>
を Databricks デプロイのワークスペース URL に置き換えます。<token>
を 個人用アクセストークンの値に置き換えます。<image-dir>
を、画像ファイルをアップロードするFileStore
内の場所に置き換えます。
セキュリティのベストプラクティスとして、自動化されたツール、システム、スクリプト、アプリで認証する場合、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
にコピーし、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 ライブラリを使用する
このノートブックでは、FileStoreを使用してJavaScriptライブラリを含める方法を示します。