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