Azure Data FactoryとAzure Databricksのベストプラクティス

[Azure Data Factory and Azure Databricks Best Practices \- Microsoft Community Hub](https://techcommunity.microsoft.com/t5/analytics-on-azure-blog/azure-data-factory-and-azure-databricks-best-practices/ba-p/3074262)の翻訳です。

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

この記事はDatabricksのソリューションアーキテクト[Leo Furlong](https://www.linkedin.com/in/leoafurlongiv/)によって執筆されました。

Azure Data Factory (ADF)、Synapse pipelines、Azure Databricksは、Azure Data Lake Storage Gen2 (ADLS Gen2)上のレイクハウス構築の堅牢な組み合わせとなります。ADFは[100以上の様々なデータソース](https://docs.microsoft.com/ja-jp/azure/data-factory/connector-overview#supported-data-stores)からAzureクラウドにネイティブにデータを取り込む機能を提供します。また、プロダクションでの構築、設定、デプロイ、モニタリングを容易に行える、グラフィカルなデータオーケストレーション、モニタリング機能も提供します。

[Azure Databricks](https://databricks.com/jp/product/azure)は、シンプルでオープンなレイクハウスですべてのデータをMicrosoft Azureを通じて利用できるDatabricksのデータ & AIサービスであり、レイクハウス上でのデータエンジニアリング、リアルタイムストリーミングアプリケーション、データサイエンスと機械学習、アドホックやBIのクエリーを含むすべての分析、AIワークロードを統合します。ユーザーは、データを整形、整理し、機械学習モデルを構築、トレーニングし、モデル推論を実行し、リアルタイムでレイクハウスにデータをストリームするために、柔軟でスケーラブルなETL/ELTパイプラインを構築するために、Azure DatabricksノートブックやDelta Live Tablesパイプラインを活用します。

ADFはAzure Databricksリンクサービスを通じて、Azure Databricksとネイティブにインテグレーションされており、企業が様々なデータソースからデータを取り込んで、レイクハウスでデータを整理するスケーラブルなデータオーケストレーションを構築するために、ノートブック、JAR、Pythonコードを実行することができます。

以下のリストでは、ADFとAzure Databricksを活用する際の5つのキーとなるプラクティスを一覧しています。

# 1. メタデータドリブンの取り込みパターン

ADFは、企業がメタデータから読み込むことができる[ダイナミック](https://docs.microsoft.com/ja-jp/azure/data-factory/how-to-expression-language-functions)パイプライン、コピーアクティビティ、ノートブックアクティビティを作成するための[メタデータドリブン](https://docs.microsoft.com/ja-jp/azure/data-factory/copy-data-tool-metadata-driven)のデータ取り込み機能を作成するために活用することができ、全く新しく開発することなしに、データソースやテーブル/ディレクトリからレイクハウスに読み込みを行うADFコードを生成することができます。

# 2. ADLSランディングゾーン、Auto Loader、Delta Lakeへの直接のADFの取り込み

ADLSにデータを取り込むためにADFとAzure Databricksを活用し、レイクハウスでデータを整形、整理するためのAzure Databricksノートブックを実行するためのベストプラクティスが2つあります。

## a. Auto Loaderによる取り込み

ADFコピーアクティビティは、CSV、JSON、Avro、Parquet、画像ファイルフォーマットを用いて様々なデータソースからデータを取り込み、ADLS Gen2のランディングゾーンにデータを配置巣します。そして、ADFはAuto Loaderを用いてAzure Databricksでパイプラインを実行するためのノートブックアクティビティを実行します。[Auto Loader](https://docs.microsoft.com/ja-jp/azure/databricks/spark/latest/structured-streaming/auto-loader)は、バッチあるいはストリーミングパイプラインを用いて、ADLS Gen2のランディングゾーンを読み取る能力を提供し、以下のメリットをもたらします:

- ADLS Gen2にデータが到着すると、インクリメンタルかつ効率的に新規データファイルを処理
- [ファイルディスカバリーモード](https://docs.microsoft.com/ja-jp/azure/databricks/spark/latest/structured-streaming/auto-loader-gen2#--file-discovery-modes)を用いて取り込まれた/処理されたファイルの記録を保持
- データ変更による[スキーマ推定とスキーマ進化](https://docs.microsoft.com/ja-jp/azure/databricks/spark/latest/structured-streaming/auto-loader-schema)のサポート

## b. Delta Lakeへの直接の取り込み

ADFのコピーアクティビティは、様々なデータソースからデータを取り込み、[ADF Delta Lakeコネクター](https://docs.microsoft.com/ja-jp/azure/data-factory/connector-azure-databricks-delta-lake?tabs=data-factory)を用いて、ADLS Gen2のデータを自動で[Delta Lakeフォーマット](https://delta.io/)に変換します。そして、ADFはAzure Databricksのパイプラインを実行するノートブックアクティビティを実行します。

Delta Lakeのメリットに馴染みがないのであれば、この[ブログ記事](https://www.databricks.com/blog/2021/12/01/the-foundation-of-your-lakehouse-starts-with-delta-lake.html)をチェックしてください。
![](https://techcommunity.microsoft.com/t5/image/serverpage/image-id/343027iB33D7A0425D9D1BC/image-size/large?v=v2&px=999)

# 3. Azure Databricksジョブの実行

あまり知られていない機能ですが、ネイティブのADFウェブアクティビティと[Azure Databricks Jobs API](https://docs.microsoft.com/ja-jp/azure/databricks/dev-tools/api/latest/jobs)を用いて、[Azure Databricksジョブ](https://docs.microsoft.com/ja-jp/azure/databricks/data-engineering/jobs/)と[ADFでのDatabricks Delta Live Tablesパイプライン](https://docs.microsoft.com/ja-jp/azure/databricks/data-engineering/delta-live-tables/delta-live-tables-workflows#azure-data-factory)の実行は非常に簡単です。Azure Databricksジョブを実行することで、クラスター再利用、パラメーター指定、リペアとリラン、Delta Live TablesパイプラインのようなAzure Databricksの最新ジョブ機能を活用することができます。
![](https://techcommunity.microsoft.com/t5/image/serverpage/image-id/343031i9EB20F9B0727486A/image-size/large?v=v2&px=999)

# 4. プール + ジョブクラスター

ADFでは、ADFパイプラインのノートブックアクティビティの実行のためのジョブクラスターを作成するために[Azure Databricksプール](https://docs.microsoft.com/ja-jp/azure/databricks/clusters/instance-pools/)を活用することができます。プールによって、データエンジニアはジョブクラスターの起動時間関するレーテンシーを犠牲することなしに、Azure Databricksでall-purposeクラスターではなくジョブクラスターを活用できるようになります。Azure Databricksプールは、アイドル状態ですぐに利用できるインスタンスを維持することで、クラスターの起動時間、オートスケーリングの時間を削減します。Azure Databricksプールは、以下のメリットを提供します: 完全なワークロードの分離、価格削減、ジョブDBUレートでの秒単位の課金、ジョブ終了時の自動停止、耐障害性、迅速なジョブクラスターの生成。ADFはAzure Databricksにリンクされたサービスの設定を通じて、Azure Databricksプールを活用することができます。さらに、使用するプールは、リンクサービスのパラメーターとエクスプレッションでパラメータ化することができます。
![](https://techcommunity.microsoft.com/t5/image/serverpage/image-id/343032i3F3D64EAD9977181/image-size/large?v=v2&px=999)

# 5. ADFマネージドアイデンティティの認証

ADFは、[マネージドアイデンティティ](https://techcommunity.microsoft.com/t5/azure-data-factory-blog/azure-databricks-activities-now-support-managed-identity/ba-p/1922818)認証やパーソナルアクセストークン(PAT)を用いてAzure Databricksに対する認証を行うことができますが、マネージドアイデンティティを使用することがベストプラクティスとなります。ADFのAzure Databricksの認証に、システム管理によるマネージドアイデンティティを用いることで、よりセキュアな認証技術を提供し、データエンジニアやクラウド管理者によるパーソナルアクセストークンの管理の負荷を排除することができます。

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

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


### Databricks無料トライアル

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