Python 開発者向けの Azure Databricks
このセクションでは、一般的なワークフローとタスクのチュートリアル、API、ライブラリ、ツールへのリンクなど、Python 言語を使用して Azure Databricks でノートブックとジョブを開発するためのガイドを提供します。
作業を開始するには:
- コードのインポート: ファイルまたは Git リポジトリから独自のコードをインポートするか、以下に示すチュートリアルを試してください。 Databricks では、対話型の Databricks Notebook を使用して学習することをお勧めします。
- クラスターでコードを実行する: 独自のクラスターを作成するか、共有クラスターを使用するアクセス許可があることを確認します。 ノートブックをクラスターにアタッチし、ノートブックを実行します。
- その後、次のことができます。
- Apache Spark を使用して大規模なデータ セットを操作する
- 視覚化を追加する
- ジョブとしてワークロードを自動化する
- 機械学習を使用してデータを分析する
- IDE で開発する
チュートリアル
以下のチュートリアルでは、一般的なワークフローについて学習するためのコードとノートブックの例を示します。 ノートブックの例をワークスペースにインポートする手順については、「ノートブックをインポートする」を参照してください。
Data Engineering
- 「チュートリアル: Apache Spark DataFrames を使用してデータを読み込んで変換する」では、データ準備と分析のための Apache Spark DataFrames について学習するのに役立つチュートリアルを提供します。
- チュートリアル: Delta Lake。
- チュートリアル: 最初の Delta Live Tables パイプラインを実行する。
データ サイエンスと機械学習
- データ準備と分析のための Apache Spark DataFrames の概要: チュートリアル: Apache Spark DataFrames を使用してデータを読み込んで変換する
- チュートリアル: Azure Databricks でのエンド ツー エンド ML モデル その他の例については、「チュートリアル: AI と機械学習の使用を開始する」および MLflow ガイドの「クイック スタート Python」を参照してください。
- AutoML を使用すると、独自のデータセットで機械学習モデルの開発をすばやく開始できます。 そのガラスボックス アプローチでは、複製、変更、再実行できる完全な機械学習ワークフローを備えたノートブックを生成します。
- Unity Catalog 内でモデル ライフサイクルを管理する
- チュートリアル: Azure Databricks でのエンド ツー エンド ML モデル
Python ノートブックでのデバッグ
ノートブックの例は、Databricks ノートブックで Python デバッガー (pdb) を使用する方法を示しています。 Python デバッガーを使用するには、Databricks Runtime 11.3 LTS 以降を実行している必要があります。
Databricks Runtime 12.2 LTS 以降では、変数エクスプローラーを使用して、ノートブック UI の Python 変数の現在の値を追跡できます。 変数エクスプローラーを使用すると、ブレークポイントをステップ実行するときに Python 変数の値を確認できます。
Python デバッガーのノートブックの例
注意
breakpoint()
は IPython ではサポートされていないため、Databricks ノートブックでは機能しません。 breakpoint()
の代わりに import pdb; pdb.set_trace()
を使用できます。
Python API
Databricks の外部で実行される Python コードは、通常、Databricks 内で実行できます。その逆も同様です。 既存のコードがある場合は、Databricks にインポートして開始します。 詳細については、以下の「ノートブックと Databricks Git フォルダーを使用してコードを管理する」を参照してください。
Databricks では、単一マシンと分散 Python の両方のワークロードを実行できます。 単一マシン コンピューティングの場合は、Python API とライブラリを通常どおりに使用できます。たとえば、pandas と scikit-learn は問題なく動作します。 分散 Python ワークロードの場合、Databricks には、PySpark と Spark 上の Pandas API という 2 つの一般的な API がすぐに使えるように用意されています。
PySpark API
PySpark は Apache Spark 用の公式 Python API であり、Python と Apache Spark の機能を組み合わせたものになっています。 PySpark は Spark 上の Pandas API よりも柔軟性が高く、Spark SQL、Structured Streaming、MLLib、GraphX などのデータ サイエンスおよびエンジニアリング機能に対して広範なサポートと機能を提供します。
Spark 上の Pandas API
注意
Koalas オープンソース プロジェクトでは、Spark 上の Pandas API への切り替えが推奨されるようになりました。 Spark 上の Pandas API は、Databricks Runtime 10.0 (サポート期間終了) 以降を実行しているクラスターで使用できます。 Databricks Runtime 9.1 LTS 以下を実行しているクラスターの場合は、代わりに Koalas を使用します。
pandas は、データの分析と操作のためにデータ サイエンティストによって一般的に使用される Python パッケージです。 しかし、pandas はビッグ データにスケールアウトしません。 Spark 上の Pandas API は、Apache Spark 上で機能する pandas と同等の API を提供することで、このギャップを埋めています。 このオープンソース API は、pandas に精通しているものの Apache Spark に精通していないデータ サイエンティストにとって理想的な選択肢です。
ノートブックと Databricks Git フォルダーを使用してコードを管理する
Databricks ノートブックでは Python がサポートされています。 これらのノートブックは Jupyter と同様の機能を提供しますが、ビッグ データを使用した組み込みの視覚化、デバッグとパフォーマンス監視のための Apache Spark 統合、機械学習の実験を追跡するための MLflow 統合などの機能が追加されています。 ノートブックをインポートして開始します。 クラスターにアクセスしたら、クラスターにノートブックをアタッチし、ノートブックを実行できます。
ヒント
ノートブックの状態を完全にリセットするには、iPython カーネルを再起動すると便利です。 Jupyter ユーザーの場合、Jupyter の "カーネルの再起動" オプションは、Databricks でのノートブックのデタッチと再アタッチに対応します。 Python ノートブックでカーネルを再起動するには、ノートブック ツール バーでコンピューティング セレクターをクリックし、一覧内のアタッチされたクラスターまたは SQL ウェアハウスの上にマウス ポインターを合わせてサイド メニューを表示します。 [デタッチして再アタッチ] を選択します。 これにより、クラスターからノートブックがデタッチされ、再アタッチされ、Python プロセスが再起動されます。
Databricks Git フォルダーを使用すると、ユーザーはノートブックやその他のファイルを Git リポジトリと同期できます。 Databricks Git フォルダーは、コードのバージョン管理とコラボレーションに役立ちます。これにより、コードの完全なリポジトリを Azure Databricks にインポートしたり、過去のノートブック バージョンを表示したり、IDE 開発と統合したりするのが簡単になります。 リモート Git リポジトリを複製して開始します。 その後、リポジトリ クローンを使用してノートブックを開くか作成し、クラスターにそのノートブックをアタッチして、ノートブックを実行できます。
クラスターとライブラリ
Azure Databricks コンピューティングでは、単一ノード クラスターから大規模なクラスターまで、あらゆるサイズのクラスターのコンピューティング管理が提供されます。 クラスターのハードウェアとライブラリは、ニーズに応じてカスタマイズできます。 通常、データ サイエンティストは、クラスターを作成するか、既存の共有クラスターを使用して作業を開始します。 クラスターにアクセスしたら、クラスターにノートブックをアタッチするか、クラスターでジョブを実行できます。
- 単一ノードのみを必要とする小規模なワークロードの場合、データ サイエンティストはコスト削減のために単一ノード コンピューティングを使用できます。
- 詳細なヒントについては、「コンピューティング構成の奨励事項」を参照してください。
- 管理者はクラスター ポリシーを設定して、クラスターの作成を簡略化し、ガイドすることができます。
Azure Databricks クラスターは Databricks ランタイムを使用します。このランタイムには、Apache Spark、Delta Lake、pandas など、多くの一般的なライブラリがすぐに使えるように用意されています。 サードパーティ製やカスタムの Python ライブラリを追加でインストールして、ノートブックやジョブで使用することもできます。
- 「Databricks Runtime リリース ノートのバージョンと互換性」の既定のライブラリから始めます。 機械学習ワークロードには、Databricks Runtime for Machine Learning を使用してください。 プレインストールされているライブラリの完全な一覧については、Databricks Runtime リリース ノートのバージョンと互換性 を参照してください。
- ノートブック スコープの Python ライブラリを使用して環境をカスタマイズします。これにより、PyPI または他のリポジトリのライブラリによってノートブックまたはジョブ環境を変更できます。
%pip install my_library
マジック コマンドは、現在接続されているクラスター内のすべてのノードにmy_library
をインストールしますが、共有クラスター上の他のワークロードに干渉することはありません。 - 必要に応じて、Python 以外のライブラリをクラスター ライブラリとしてインストールします。
- 詳細については、「ライブラリ」を参照してください。
視覚化
Azure Databricks Python ノートブックには、さまざまな種類の視覚化のサポートが組み込まれています。 レガシ視覚化を使用することもできます。
サードパーティのライブラリを使用してデータを視覚化することもできます。一部は Databricks Runtime にプレインストールされていますが、カスタム ライブラリもインストールできます。 一般的なオプションには、次のものが含まれます。
ジョブ
Databricks では、スケジュールされたジョブまたはトリガーされた ジョブ として Python ワークロードを自動化できます。 ジョブでは、ノートブック、Python スクリプト、Python ホイール ファイルを実行できます。
- Databricks UI または Databricks REST API を使用してジョブを作成および更新します。
- Databricks Python SDK を使用すると、プログラムでジョブを作成、編集、削除できます。
- Databricks CLI には、ジョブを自動化するための便利なコマンド ライン インターフェイスが用意されています。
ヒント
ノートブックの代わりに Python スクリプトをスケジュールするには、ジョブの作成要求の本文の tasks
の下にある spark_python_task
フィールドを使用します。
機械学習
Databricks は、表形式データに関する従来の ML、コンピューター ビジョンと自然言語処理のためのディープ ラーニング、レコメンデーション システム、グラフ分析など、さまざまな機械学習 (ML) ワークロードをサポートしています。 Databricks での機械学習に関する一般的な情報については、「Databricks での AI および機械学習」を参照してください。
ML アルゴリズムの場合は、Databricks Runtime for Machine Learning にプレインストールされているライブラリを使用できます。これには、scikit-learn、TensorFlow、Keras、PyTorch、Apache Spark MLlib、XGBoost などの一般的な Python ツールが含まれています。 カスタム ライブラリをインストールすることもできます。
機械学習操作 (MLOps) の場合、Azure Databricks は、オープンソース ライブラリ MLflow のマネージド サービスを提供します。 MLflow の追跡を使用すると、モデル開発を記録し、再利用可能な形式でモデルを保存できます。 MLflow モデル レジストリを使用すると、運用に向けたモデルの昇格を管理および自動化できます。 ジョブとモデルの提供を使用すると、モデルをバッチ ジョブやストリーミング ジョブとして、また REST エンドポイントとしてホストできます。 詳細と例については、MLflow を使った ML ライフサイクル管理に関する記事または MLflow Python API のドキュメントを参照してください。
一般的な機械学習ワークロードの使用を開始するには、下記のページを参照してください。
- MLflow を使用した scikit-learn と追跡のトレーニング: 10 分間のチュートリアル: scikit-learn を使用した Databricks での機械学習
- ディープ ラーニング モデルのトレーニング: ディープ ラーニング
- ハイパーパラメーターのチューニング: Hyperopt ハイパーパラメーターのチューニングを並列化する
- グラフ分析: Azure Databricks で GraphFrames を使用する方法
IDE、開発者ツール、SDK
Azure Databricks ノートブック内で Python コードを開発するだけでなく、PyCharm、Jupyter、Visual Studio Code などの統合開発環境 (IDE) を使用して外部で開発することもできます。 外部開発環境と Databricks の間で作業を同期するには、いくつかのオプションがあります。
- コード: Git を使用してコードを同期できます。 Git と Databricks Git フォルダーの統合を参照してください。
- ライブラリとジョブ: 外部でライブラリ (Python ホイール ファイルなど) を作成し、Databricks にアップロードできます。 これらのライブラリは、Databricks ノートブック内にインポートすることも、ジョブの作成に使用することもできます。 「Libraries」と「ワークフローのスケジュールと調整」を参照してください。
- リモート マシンの実行: ローカル IDE からコードを実行して、対話型の開発とテストを行うことができます。 IDE は Azure Databricks と通信して、Azure Databricks クラスターで Apache Spark と大規模な計算を実行できます。 「Databricks Connect」を参照してください。
Databricks には、自動化と外部ツールとの統合をサポートする Python SDK を含む一連の SDK が用意されています。 Databricks SDK を使用して、クラスターやライブラリ、コードやその他のワークスペース オブジェクト、ワークロードやジョブなどのリソースを管理できます。 「Databricks SDK」を参照してください。
IDE、開発者ツール、SDK の詳細については、「開発者ツール」を参照してください。
その他のリソース
Databricks Academy では、多くのトピックに関する自己ペースで講師主導のコースを提供しています。
Databricks Labs には、 pytest プラグイン pylint プラグインなど、Databricks での Python 開発用のツールが用意されています。
PySpark と pandas の相互運用性をサポートする機能は次のとおりです。
Python と SQL データベースの接続ツールは次のとおりです。
- Databricks SQL Connector for Python によって、Python コードを使用して Azure Databricks リソースに対して SQL コマンドを実行できるようになります。
- pyodbc を使用すると、ローカルの Python コードから ODBC を介して Databricks レイクハウスに保存されているデータに接続できます。
Python ワークロードを Databricks に移動するための FAQ とヒントについては、 Databricks ナレッジ ベースを参照してください。