Databricksノートブック実行結果の格納場所の設定

[Configure notebook result storage location \| Databricks on AWS](https://docs.databricks.com/en/administration-guide/workspace/settings/notebook-results.html) [2023/6/1時点]の翻訳です。

:::note warn
本書は抄訳であり内容の正確性を保証するものではありません。正確な内容に関しては原文を参照ください。
:::

あなたの組織のプライバシー要件が、ノートブックコマンドの結果が格納されるDatabricks管理のコントロールプレーンのデフォルトロケーションではなく、お使いのクラウドアカウントの[ルートS3ストレージバケット](https://docs.databricks.com/en/administration-guide/account-settings-e2/storage.html)にすべてのインタラクティブノートブックの実行結果を格納することを求めるかもしれません。

ノートブックコマンドのアウトプットは、ノートブックをどのように実行するのかによって格納場所が異なります。

デフォルトでは、ノートブックで**Run**をクリックしてインタラクティブにノートブックを実行した際:

- 結果が小規模な場合には、それらはDatabricksの[コントロールプレーン](https://qiita.com/taka_yayoi/items/7d209bc8d32bc5f2dba4)にノートブックのコマンドのコンテンツとメタデータとともに格納されます。
- より大きな結果はお使いのAWSアカウントにあるワークスペースの[ルートS3ストレージバケット](https://docs.databricks.com/en/administration-guide/account-settings-e2/storage.html)に格納されます。Databricksはこのバケットをワークスペースのシステムデータとワークスペースの[DBFSルート](https://qiita.com/taka_yayoi/items/406b639a9dcd43dbcc54)のために使用します。ノートブックの実行結果はこのバケットの一部のワークスペースシステムデータに格納されますが、これにはユーザーはアクセスすることはできません。
- プロットの画像やその他のバイナリーオブジェクトは、[DBFSルート](https://qiita.com/taka_yayoi/items/406b639a9dcd43dbcc54)の[FileStore](https://qiita.com/taka_yayoi/items/01d9b69d2f5283d27d96)領域に常に格納されます。

スケジューリングあるいはJobsページで**Run Now**をクリックして、ジョブとしてノートブックを実行した際には、すべての結果はお使いのアカウントの[ルートS3ストレージバケット](https://docs.databricks.com/en/administration-guide/account-settings-e2/storage.html)に格納されます。

結果のサイズに関係なく、[インタラクティブノートブックのすべての実行結果をお使いのクラウドアカウントに格納](#インタラクティブノートブックの実行結果ストレージロケーションの設定)するように、ワークスペースを設定することができます。

# インタラクティブノートブックの実行結果ストレージロケーションの設定

コントロールプレーンではなく、お使いのAWSアカウントにインタラクティブノートブックのすべての実行結果を格納するようにワークスペースを設定することができます。[管理者設定ページ](#管理者設定ページを用いてお使いのアカウントにすべてのノートブック実行結果を格納)あるいは[REST API](#rest-apiを用いてすべてのノートブックの実行結果をお使いのアカウントに格納)を用いてこの機能を有効化することができます。この設定は、デフォルトでお使いのAWSアカウントに格納されるジョブとしてのノートブックの実行結果には影響を与えません。

以下の点に留意してください:

- この設定変更は新規の結果にのみ影響します。既存のノートブックの実行結果は移動されません。
- 図のカラム名のような結果に関するいくつかのメタデータはコントロールプレーンに格納され続けます。
- お使いのクラウドプロバイダーにおけるストレージコストが増加する場合があります。
- 結果の読み書きにおいて、ネットワークやIOのレーテンシーが増加する場合があります。

# 管理者設定ページを用いてお使いのアカウントにすべてのノートブック実行結果を格納

ワークスペース管理者として:

1. [管理者設定ページ](https://docs.databricks.com/en/administration-guide/index.html#admin-settings)に移動します。
1. **Workspace Settings**タブをクリックします。
1. **Advanced**セクションで**Store Interactive Notebook Results in Customer Account**トグルをクリックします。
1. **Confirm**をクリックします。

## REST APIを用いてすべてのノートブックの実行結果をお使いのアカウントに格納

REST APIを用いてお使いのAWSアカウントにすべてのノートブックの実行結果を格納するようにワークスペースを設定するには:

- ワークスペース管理者である必要があります。
- [パーソナルアクセストークン](https://docs.databricks.com/api/workspace/tokenmanagement)が必要です。以下の手順では、`curl`コマンドで`-n`オプションを使用できるように、あなたのパーソナルアクセストークンが`.netrc`ファイルに設定されていることを前提としています。詳細については上述の記事を参照下さい。

現在の設定を取得するには、`GET /workspace-conf`エンドポイントを呼び出し、`keys`に`storeInteractiveNotebookResultsInCustomerAccount`を設定します:

```bash
curl -n --request GET \
  'https://<databricks-instance>../api/2.0/workspace-conf?keys=storeInteractiveNotebookResultsInCustomerAccount'
```

ワークスペースですべてのインタラクティブノートブックの結果をお使いのAWSアカウントに保存するようにするには、`PATCH /workspace-conf`エンドポイントを呼び出し、リクエストボディで`storeInteractiveNotebookResultsInCustomerAccount`を`true`に設定します:

```bash
curl -n --request PATCH \
 'https://<databricks-instance>../api/2.0/workspace-conf' \
 --header 'Content-Type: text/plain' \
 --data-raw '{
    "storeInteractiveNotebookResultsInCustomerAccount": "true"
}'
```

この機能を無効化するには、同じフラグを`false`に設定します:

```bash
curl -n --request PATCH \
  'https://<databricks-instance>../api/2.0/workspace-conf' \
 --header 'Content-Type: text/plain' \
 --data-raw '{
    "storeInteractiveNotebookResultsInCustomerAccount": "false"
}'
```

### Databricksクイックスタートガイド

[Databricksクイックスタートガイド](https://www.amazon.co.jp/dp/B09V1YXFVQ/)


### Databricks無料トライアル

[Databricks無料トライアル](https://databricks.com/jp/try-databricks)