Databricks Asset Bundles(DAB)のPythonサポートがパブリックプレビューで利用可能になったことをお知らせします!Databricksユーザーは長い間、Pythonでパイプラインロジックを作成することができましたが、今回のリリースにより、オーケストレーションやスケジューリングを含むパイプライン開発のライフサイクル全体を、完全にPythonで定義・デプロイできるようになりました。Databricks Asset Bundles(「バンドル」)は、環境間でパイプラインを定義、バージョン管理、デプロイするための構造化されたコードファーストのアプローチを提供します。ネイティブPythonサポートにより、柔軟性が向上し、再利用性が促進され、Pythonを好むチームや複数環境間で動的な設定を必要とするチームの開発体験が向上します。 大規模なジョブとパイプラインのデプロイを標準化 数十から数百のパイプラインを管理するデータエンジニアリングチームは、一貫したデプロイ手法の維持に課題を抱えることがよくあります。運用規模の拡大に伴い、バージョン管理、本番前の検証、プロジェクト間での繰り返し設定の排除が必要になります。従来、このワークフローでは大規模なYAMLファイルの維持やDatabricks UI経由での手動更新が必要でした。 Pythonはジョブとパイプラインをプログラムで設定できるようにすることで、このプロセスを改善します。静的なYAMLファイルを手動で編集する代わりに、チームはデフォルトクラスターの設定、タグの適用、命名規則の適用などのロジックをPythonで一度定義し、それを複数のデプロイメント間で動的に適用できます。これにより重複が減少し、保守性が向上し、開発者はデプロイ定義を既存のPythonベースのワークフローやCI/CDパイプラインにより自然に統合できるようになります。 「宣言的なセットアップとネイティブなDatabricks統合により、デプロイメントがシンプルで信頼性の高いものになります。特にミューテーターは優れており、ジョブを自動タグ付けやデフォルト設定などでプログラム的にカスタマイズできます。DABがデプロイメントの標準になることを楽しみにしています。」 — DoubleVerifyのソフトウェアエンジニアリングマネージャー、Tom Potash氏 Databricks Asset BundlesのためのPythonパワードデプロイメント Databricks Asset BundlesへのPythonサポートの追加により、デプロイプロセスが合理化されます。ジョブとパイプラインが完全にPythonで定義、カスタマイズ、管理できるようになりました。バンドルとのCI/CD統合はすでに利用可能でしたが、Pythonを使用することで複雑な設定の作成が簡素化され、重複が減少し、チームが異なる環境間でベストプラクティスをプログラムで標準化できるようになります。 ジョブの「コードとして表示」機能を使用して、プロジェクトに直接コピー&ペーストすることもできます(詳細はこちら)。 高度な機能:プログラムによるジョブ生成とカスタマイズ このリリースの一部として、メタデータを使用してプログラムでジョブを作成するために使用されるload_resources関数を導入します。Databricks CLIはデプロイ中にこのPython関数を呼び出して、追加のジョブとパイプラインをロードします(詳細はこちら)。 def load_resources(bundle: Bundle) -> Resources: """ load_resources() is called during bundle deployment Here a job is created for every notebook in the src folder """ resources = Resources() for file in glob.glob("src/**/*.ipynb", recursive=True): resources.add_job( resource_name=os.path.basename(file).removesuffix(".ipynb"), job={ "name": file, "tasks": [ { "task_key": "notebook_task", "notebook_task": {"notebook_path": file}, }, ], }, ) return resources もう一つの便利な機能は、パイプライン設定を検証し、ジョブ定義を動的に更新できるミューテーターパターンです。ミューテーターを使用すると、繰り返しのYAMLやPython定義なしに、デフォルトの通知やクラスター設定などの共通設定を適用できます: def add_email_notifications(job): """ Adds default email notifications if they are not already set. """ if job.email_notifications: return job email_notifications = JobEmailNotifications(on_failure=["someone@example.com"]) return replace(job, email_notifications=email_notifications) ミューテーターについて詳しくはこちらをご覧ください。 いますぐ始めましょう! 今すぐDatabricks Asset BundlesのPythonサポートを試してみましょう! Databricks Asset BundlesのドキュメントおよびDatabricks Asset BundlesのPythonサポートのドキュメントをご覧ください。これらの強力な新機能で何を構築するか楽しみにしています。皆様のフィードバックを大切にしていますので、ぜひ経験や提案をお聞かせください!