メインコンテンツまでスキップ

ファイルストア

important

このドキュメントは廃止されており、更新されない可能性があります。 このコンテンツに記載されている製品、サービス、またはテクノロジはサポートされなくなりました。

FileStoreは、 DBFS 内の特別なフォルダで、ファイルを保存してWebブラウザからアクセスできるようにすることができます。 FileStore を使用すると、次のことができます。

  • displayHTML を呼び出すときにHTMLおよびJavaScript内でアクセスできる画像やライブラリなどのファイルを保存する
  • ダウンロードする出力ファイルをローカル・デスクトップに保存する
  • CSVやその他のデータファイルをローカル・デスクトップからアップロードして Databricksで処理する

特定の機能を使用する際に、DatabricksはFileStore内の次のフォルダにファイルを配置します。

  • /FileStore/jars - アップロードされた従来のワークスペースライブラリが含まれています。 このフォルダ内のファイルを削除すると、ワークスペース内でこれらのファイルを参照するライブラリが機能しなくなる可能性があります。
  • /FileStore/tables - UI を使用してインポートしたファイルが含まれています。 このフォルダ内のファイルを削除すると、これらのファイルから作成したテーブルにアクセスできなくなる可能性があります。
important

ライブラリは、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 ディレクトリに任意のテキストファイルを書き込むことができます。

Python
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.txthttps://<databricks-instance>/files/my-stuff/my-file.txt?o=###### で置き換えます。o= に続く数字はURLに含まれるものと同じになります。

注記

DBFS ファイル・アップロード・インターフェースを使用して、 /FileStore ディレクトリーにファイルを配置することもできます。 DBFS でのテーブルの探索と作成を参照してください。

ノートブックに静止画像を埋め込む

files/ の場所を使用して、静止画像をノートブックに埋め込むことができます。

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

または、Markdown画像インポート構文を使用します。

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

Markdown の使用例

たとえば、FileStoreにDatabricksのロゴ画像ファイルがあるとします。

Bash
dbfs ls dbfs:/FileStore/
Console
databricks-logo-mobile.png

Markdown セルに次のコードを含めると、セルに画像がレンダリングされます。

Markdownセル内の画像

レンダリングされた例:

レンダリングされた画像

DBFS API とリクエスト Python HTTP ライブラリの使用例

静的画像は、 DBFS APIリクエスト Python HTTP ライブラリを使用してアップロードできます。 次の例では、次のようになります。

  • <databricks-instance> を Databricks デプロイのワークスペース URL に置き換えます。
  • <token>個人用アクセストークンの値に置き換えます。
  • <image-dir> を、画像ファイルをアップロードする FileStore 内の場所に置き換えます。
注記

セキュリティのベストプラクティスとして、自動化されたツール、システム、スクリプト、アプリで認証する場合、Databricks では、ワークスペースユーザーではなく 、サービスプリンシパル に属する個人用アクセストークンを使用することをお勧めします。 サービスプリンシパルのトークンを作成するには、「 サービスプリンシパルのトークンの管理」を参照してください。

Python
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 の画像パラメーターを使ってサイズを調整します。

Python
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ライブラリを含める方法を示します。

DBFS FileStore サンプル ノートブック

Open notebook in new tab