AWS東京リージョンにノートブック用サーバレスがやってきました！

[先日のイベント](https://qiita.com/taka_yayoi/items/011f213d7de8e9f4c17b)で発表があった件です。

![Screenshot 2024-07-09 at 8.45.45.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1168882/63f62942-bfed-5808-bac9-af8b9f72a464.png)

マニュアルはこちら。

https://docs.databricks.com/ja/compute/serverless.html

:::note info
**注意**
利用できるようになるまでにはタイムラグがある場合があります。有効化の画面が表示されない場合には少々お待ちください。
:::


# ノートブック用サーバレスとは

これまではノートブックのPythonプログラムなどを実行するには、お客様VPC上のEC2をベースとした[All Purpose(汎用)クラスター](https://docs.databricks.com/ja/compute/use-compute.html)が必要でした(SQLのみならサーバレスSQLウェアハウスも使えますが)。このため、インスタンスの獲得、ランタイムのインストールなどで通常は起動に5分程度を要していました。これのサーバレス版がノートブック用サーバレス(Serverless compute for notebooks)です。即座に利用できる計算資源です。

# サーバレスを利用する際の考慮事項

## 価格

2024/7/9朝時点での[Pricingページ](https://www.databricks.com/product/pricing/datascience-ml)のスクリーンショットです。詳細はDatabricksアカウントチームにお問い合わせください。
![Screenshot 2024-07-09 at 9.16.08.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1168882/6030baf9-3bce-9e64-b92f-4f30b12c430a.png)

## 制限事項

[こちら](https://docs.databricks.com/ja/release-notes/serverless.html#limitations)の制限事項をご確認ください。関連する箇所を翻訳します。

**一般的な制限**

- ScalaとRは未サポート。
- SQLを記述する際にはANSI SQLのみがサポート。
- Spark RDD APIは未サポート。
- Sparkコンテキスト(sc)、`spark.sparkContext`、`sqlContext`は未サポート。
- [DBFS](https://docs.databricks.com/ja/dbfs/index.html)にアクセスはできません。
- [Databricks Container Services](https://docs.databricks.com/ja/compute/custom-containers.html)は未サポート。
- [webターミナル](https://docs.databricks.com/ja/compute/web-terminal.html)は未サポート。
- 48時間以上クエリーを実行することはできません。
- 外部データソースに接続するにはUnity Catalogが必要です。クラウドストレージにアクセスするには[外部ロケーション](https://docs.databricks.com/ja/connect/unity-catalog/external-locations.html)を使います。
- データソースのサポートは、AVRO, BINARYFILE, CSV, DELTA, JSON, KAFKA, ORC, PARQUET, ORC, TEXT, XMLに限定されます。
- ユーザー定義関数(UDF)はインターネットにアクセスできません。
- 個々の行の最大サイズが128MBを超えることはできません。
- Spark UIを使うことはできません。代わりに、Sparkクエリーの情報を参照するためにはクエリープロファイルを使います。[クエリープロファイル](https://docs.databricks.com/ja/sql/user/queries/query-profile.html)をご覧ください。
- Databricksエンドポイントを使用するPythonクラウアントは、“CERTIFICATE_VERIFY_FAILED”のようなSSL検証エラーに遭遇するかもしれません。これらのエラーを回避するには、クライアントが`/etc/ssl/certs/ca-certificates.crt`にあるCAファイルを信頼するように設定して下さい。例えば、サーバレスノートブックやジョブの最初に以下を記述します:

    ```py
    import os; os.environ['SSL_CERT_FILE'] = '/etc/ssl/certs/ca-certificates.crt'
    ```

- ワークスペース横断のAPIリクエストはサポートされていません。

**機械学習の制限**

- [機械学習ランタイム](https://docs.databricks.com/ja/machine-learning/index.html#dbr-ml)や[Apache Spark MLlib](https://docs.databricks.com/ja/machine-learning/train-model/mllib.html)はサポートされていません。
- GPUはサポートされていません。

**ノートブックの制限**

- ノートブックは設定不可の8GBメモリーにアクセスします。
- ノートブックスコープライブラリは開発セッション横断ではキャッシュされません。
- ユーザー間でノートブックを共有する際、TEMPテーブルやビューの共有はサポートされません。
- ノートブックにおけるデータフレームの[オートコンプリートや変数エクスプローラ](https://docs.databricks.com/ja/notebooks/notebooks-code.html)はサポートされません。

**コンピュート固有の制限**

以下のコンピュート固有の機能はサポートされません:

- コンピュートポリシー
- コンピュートスコープinitスクリプト
- カスタムデータソースやSpark拡張を含むコンピュートスコープのライブラリ。代わりに[ノートブックスコープライブラリ](https://docs.databricks.com/ja/libraries/notebooks-python-libraries.html)を使います。
- インスタンスプロファイルを含むコンピュートレベルのデータアクセス設定。このため、クラウドパスに基づくHMS経由や埋め込まれた資格情報がないDBFSマウント経由でのテーブルやファイルは動作しません。
- インスタンスプール
- コンピュートのイベントログ
- Apache Sparkコンピュート設定や環境変数

# ウォークスルー

## 有効化

1. [アカウントコンソール](https://accounts.cloud.databricks.com/)にログインします。
1. **設定**の**機能の有効化**にアクセスします。
1. **ワークフロー、ノートブック、Delta Liveテーブル向けのサーバーレスコンピュート**をオンにします。
![Screenshot 2024-07-09 at 3.12.40.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1168882/49c2c178-7087-ccfc-79fa-3438c1419647.png)

## ノートブックのアタッチ

適当なノートブックを作成し、右上のクラスターセレクターを開くと**サーバレス**が表示されているので選択します。
![Screenshot 2024-07-09 at 3.13.49.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1168882/6dce1971-0d9f-a434-8c94-2958f2966beb.png)

これで、サーバレスコンピュートを使ってプログラムを実行できるようになりました。

## プログラムの実行

簡単なPySparkのコードを実行してみます。

```py
df = spark.table("main.default.`日本語テーブル`")
display(df)
```
![Screenshot 2024-07-09 at 8.54.08.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1168882/d72859ff-3587-498f-b1fd-714bc268fe62.png)

実行できました！

## パフォーマンスを表示

**パフォーマンスを表示**をクリックすると、処理のパフォーマンスに関するメトリクスを表示することができます。パフォーマンス改善の取り組みで活用できます。
![Screenshot 2024-07-09 at 3.15.58.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1168882/3bb37bfc-1b99-17cc-2df2-291ba94a16f6.png)
![Screenshot 2024-07-09 at 3.16.07.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1168882/09f8d7c7-32df-8b1e-92f8-1ea52707d0a9.png)

## ライブラリのインストール

画面右の本棚マークで**環境**を設定することができます。ここからライブラリを追加することができます。
![Screenshot 2024-07-09 at 8.58.57.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1168882/3661f82c-2707-8d0e-eb6b-076e4ac21742.png)

以下のように記述して、パネル下部の**適用**をクリックします。

```
drawdata==0.3.3
```

![Screenshot 2024-07-09 at 9.10.07.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1168882/e22cd9b6-d5d8-41fb-a130-83fa162cf891.png)
![Screenshot 2024-07-09 at 9.10.22.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1168882/0ffdca54-4ea0-3ec7-1664-ad4c82763bdf.png)

これでライブラリが追加されました。
![Screenshot 2024-07-09 at 9.12.07.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1168882/f8aafac5-4679-ddd7-1133-2a537a8c2d23.png)

用法・用量にご留意の上ご活用ください！

### はじめてのDatabricks

[はじめてのDatabricks](https://qiita.com/taka_yayoi/items/8dc72d083edb879a5e5d)

### Databricks無料トライアル

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