こちらのサイト、今年の頭くらいに公開されていたみたいです。最近まで知りませんでした。お恥ずかしい。
Databricks Apps Cookbookは、Databricks Apps上でインタラクティブなデータおよびAIアプリケーションを構築するための実践的なコードスニペット集です。Streamlit、Dash、FastAPIなどの主要Pythonフレームワークに対応し、Unity Catalogのテーブルやボリュームへのアクセス、機械学習モデルの呼び出し、ワークフローのトリガーなど、実際の開発でよく使われるユースケースをカバーしています。各レシピには、ソースコード、必要な権限、依存関係、実装に必要な情報がすべて含まれており、ローカル開発からCI/CDを使った本番環境へのデプロイまで、開発プロセス全体をサポートします。初心者でも簡単に始められる実装例とデプロイ手順が用意されています。
機能概要
Databricks Apps Cookbookは、以下の主要な機能と特徴を提供しています。
対応フレームワーク
現在、3つの主要なPythonフレームワークに対応したコードスニペットを提供しています:
フレームワーク | 用途 | 特徴 |
---|---|---|
Streamlit | データ可視化・分析アプリ | シンプルな記述で高機能なUIを構築可能 |
Dash | インタラクティブダッシュボード | 高度なカスタマイズが可能なWeb アプリケーション |
FastAPI | REST API開発 | 高速で型安全なAPI開発が可能 |
主要なコードスニペットカテゴリ
データアクセス系
- Unity Catalogのテーブルからのデータ読み取り
- Unity Catalogボリュームへのファイル読み書き
- データのダウンロード・アップロード処理
AI/ML系
- 従来型の機械学習モデルの呼び出し
- 生成AI (GenAI) の活用
- モデル推論エンドポイントの実装
ワークフロー系
- Databricks Workflowsのトリガー
- ジョブの実行と管理
- パイプライン処理の自動化
認証・セキュリティ系
- ユーザー認証の実装
- OAuth2 Bearer トークン認証
- HTTPヘッダーからのユーザー情報取得
デプロイメントオプション
Databricks Apps Cookbookは、複数のデプロイメント方法をサポートしています:
-
ローカル開発環境での実行
- Python仮想環境を使った開発
- Databricks CLIによる認証
- リアルタイムでのコード変更反映
-
Databricksワークスペースへの直接デプロイ
- Git統合を使った簡単なデプロイ
- Apps UIからのワンクリックデプロイ
-
CI/CDパイプラインを使った自動デプロイ
- GitHub Actionsとの統合
- Databricks Asset Bundles (DABs) の活用
- 開発・本番環境の自動デプロイ
メリット、嬉しさ
開発効率の大幅向上
Databricks Apps Cookbookを使用することで、ゼロから実装する必要がなく、すぐに動くコードをベースに開発を始められます。各レシピは実際に検証済みで、必要な権限設定や依存関係も明記されているため、試行錯誤の時間を大幅に削減できます。
実践的な実装パターンの学習
単なるサンプルコードではなく、実際の業務で使える実装パターンが網羅されています。例えば:
- ユーザー認証を含むセキュアなアプリケーション構築
- Unity Catalogとの適切な連携方法
- エラーハンドリングやロギングのベストプラクティス
柔軟な開発環境のサポート
ローカルIDEでの開発からDatabricksワークスペースでの開発まで、開発者の好みに応じた環境選択が可能です。また、既存のGitワークフローやCI/CDパイプラインとシームレスに統合できるため、チーム開発にも適しています。
セキュリティとガバナンスの確保
Databricks Apps上で動作するため、以下のセキュリティメリットがあります:
- Databricksのセキュリティ機能を活用した安全なアプリケーション実行
- Unity Catalogによるデータガバナンスの適用
- サービスプリンシパルを使った適切な権限管理
使い方の流れ
ローカルでの開発も可能ですが、今回はクックブックをさくっと動かしてみたいのでDatabricksワークスペースからスタートします。
ソースコードの読み込み
コードはGitHubで公開されているので、これをGitフォルダーとして読み込みます。
アプリの作成
サイドメニューのコンピュートのアプリにアクセスして、アプリの作成をクリックします。選択肢が表示されますが、ここではカスタムを選択します。
適切なアプリの名前をつけて作成します。これで、計算リソースなどアプリが動作するためのインフラが準備されます。
アプリが作成されました。しかし、この時点ではアクセスできません。アプリのコードをデプロイする必要があります。
コードのデプロイ
デプロイをクリックして、上のステップで作成してGitフォルダ配下のstreamlitやdashなどのフォルダを選択します。これはお好きなフレームワークで。
コードのデプロイが完了するとURLにアクセスできるようになります。アクセスします。私はこれで驚いたのですが、ここのレシピごとにアプリを作るのかと思ってたのですが、一つのアプリですべてのレシピにアクセスすることができます。これは嬉しい。
動作確認
例えば、アプリ上でこちらのテーブル読み込みのレシピにアクセスしてみます。
だだ、以下でも触れますがこの時点では権限が設定されていないので、このままではテーブルにアクセスできずエラーになります。
Databricks Appsでアプリを作成すると、アプリに紐づくサービスプリンシパル(個人と紐づかないユーザー)が作成されます。アプリが動作する際このサービスプリンシパルでDatabricksの各種リソースにアクセスします。このため、サービスプリンシパルのリソースへのアクセスが許可されていない場合には権限エラーになります。
この場合は、使用する計算リソースとアクセスするテーブルにアクセス権があるかどうか確認し、ない場合には付与します。
これで、アプリからテーブルのデータを読み込むことができました。
テーブルの編集のレシピに関しても同様です。この場合は、サービスプリンシパルによる対象テーブルへのMODIFY
権限が必要となります。
レシピごとに必要な権限も確認できます。Requirementsタブにアクセスしてください。
Genieスペースにアクセスするレシピもあります。
注意点
権限設定の重要性
各レシピには必要な権限が明記されています。特にUnity Catalogへのアクセスやワークフローの実行には適切な権限設定が必要です。実装前に必ず権限要件を確認し、セキュリティチームと調整してください。
ローカル開発とDatabricks環境の違い
一部の機能はDatabricks Apps上でのみ動作します。例えば:
- HTTPヘッダーからのユーザー情報取得
- サービスプリンシパルを使った認証
- Unity Catalogボリュームへの直接アクセス
ローカル開発時はこれらの制限を考慮し、適切なモックやスタブを用意することを推奨します。
パフォーマンスとコスト管理
- コンピュートリソース: アプリのサイズと負荷に応じて適切なコンピュートサイズを選択
- データアクセス: 大量のデータを扱う場合は、適切なフィルタリングとページネーションを実装
- キャッシング: 頻繁にアクセスするデータはキャッシュを活用してコストを削減
バージョン管理とアップデート
- フレームワークのバージョンは
requirements.txt
で明示的に管理 - Databricks Appsのデフォルト環境に含まれるパッケージも、必要に応じて最新版を指定
- 定期的にセキュリティアップデートを確認し、依存関係を更新
エラーハンドリング
本番環境では適切なエラーハンドリングとロギングを実装することが重要です:
import logging
from databricks.sdk import WorkspaceClient
from databricks.sdk.errors import NotFound, PermissionDenied
try:
w = WorkspaceClient()
result = w.statement_execution.execute_statement(...)
except PermissionDenied:
logging.error("権限が不足しています")
st.error("データへのアクセス権限がありません")
except NotFound:
logging.error("指定されたリソースが見つかりません")
st.error("データが見つかりません")
except Exception as e:
logging.error(f"予期しないエラー: {str(e)}")
st.error("エラーが発生しました")
まとめ
Databricks Apps Cookbookは、Databricks Apps上でのアプリケーション開発を効率化する実践的なリソースです。すぐに使えるコードスニペット、詳細な実装手順、そしてローカル開発からCI/CDまでをカバーする包括的なサポートにより、開発者は本来のビジネスロジックに集中できます。
特に、Unity Catalogとの連携、機械学習モデルの活用、セキュアな認証実装など、エンタープライズレベルのデータアプリケーション開発に必要な要素が網羅されている点が大きな価値です。また、GitHubでのオープンソース公開により、コミュニティからの貢献も期待でき、継続的な改善が見込まれます。
Databricks Appsを使ったアプリケーション開発を始める際は、まずDatabricks Apps Cookbookのレシピを確認し、既存のパターンを活用することで、開発期間の短縮と品質の向上を実現できるでしょう。
Databricks Appsを絶賛勉強中の自分にとっては救世主のような存在です。(作ってくれた方)ありがとうございます!