Python開発者のためのDatabricks

このセクションでは、Python言語を使用してDatabricksでノートブックとジョブを開発するためのガイドを提供します。最初のサブセクションでは、一般的なワークフローとタスクのチュートリアルへのリンクを提供します。2番目のサブセクションでは、API、ライブラリ、主要なツールへのリンクを提供します。

基本的なワークフローは以下のとおりです。

チュートリアル

以下のチュートリアルでは、一般的なワークフローについて学習するためのサンプル コードとノートブックを提供します。 ノートブックの例をワークスペースにインポートする手順については、「 ノートブックのインポート 」を参照してください。

インタラクティブなデータサイエンスと機械学習

データエンジニアリング

Pythonノートブックでデバッグを行う

この例は、Python で デバッガー (pdb)Databricks を使用する方法を示しています。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 APIsとライブラリを通常どおり使用できます。たとえば、 PandasとScikit-Learn 「そのまま動作」します。 分散 Python ワークロード向けに、Databricks は PySpark と PandasAPI on Spark という 2 つの一般的な API をすぐに使用できるように提供しています。

PySpark API

PySparkは、Apache Spark の公式 Python API であり、Python と Apache Spark のパワーを組み合わせたものです。 PySpark は PandasAPI on Spark よりも柔軟性が高く、Spark SQL や構造化ストリーミング、MLlib 、GraphX などのデータサイエンスおよびエンジニアリング機能に対する広範なサポートと機能を提供します。

Pandas API on Spark

Koalas オープンソース プロジェクトでは、Spark で Pandas API に切り替えることを推奨しています。Spark 上の Pandas API は、 Databricks Runtime 10.0 (EoS) 以降を実行するクラスターで使用できます。 Databricks Runtime 9.1 LTS 以下を実行するクラスターの場合は、代わりに Koalas を使用します。

pandasは、データの分析や操作のためにデータサイエンティストが一般的に使用するPythonパッケージです。ただしpandasでは、ビッグデータに合わせたスケールアウトはされません。Pandas API on Sparkでは、Apache Sparkで動作するpandasと同等のAPIを提供することで、この問題を解決します。このオープンソースAPIは、pandasには詳しいがApache Sparkには詳しくないデータサイエンティストにとって理想的な選択肢になります。

ノートブックと Databricks Git フォルダーを使用してコードを管理する

Databricks ノートブックは Python をサポートしています。 これらのノートブックは、Jupyter と同様の機能を提供しますが、ビッグデータを使用した組み込み visualization、デバッグとパフォーマンス モニタリングのための Apache Spark 統合、機械学習 エクスペリメントを追跡するための MLflow 統合などの追加機能が追加されています。 ノートブックをインポートして開始します。クラスターにアクセスできるようになったら、ノートブックをクラスター にアタッチ して ノートブックを実行できます

ヒント

ノートブックの状態を完全にリセットするには、iPython カーネルを再起動すると便利な場合があります。 Jupyter ユーザーの場合、Jupyter の "カーネルの再起動" オプションは、Databricks でのノートブックのデタッチと再アタッチに対応します。 Python ノートブックでカーネルを再起動するには、ノートブック ツール バーの コンピュート セレクター をクリックし、リスト内のアタッチされたクラスターまたは SQLウェアハウスにカーソルを合わせてサイド メニューを表示します。 [ Detach & re-attach] を選択します。 これにより、ノートブックがクラスターからデタッチされて再アタッチされ、Python プロセスが再起動されます。

Databricks Git フォルダー を使用すると、ユーザーはノートブックやその他のファイルを Git リポジトリと同期できます。 Databricks Git フォルダーは、コードのバージョン管理とコラボレーションに役立ち、Databricks へのコードの完全なリポジトリのインポート、過去のノートブック バージョンの表示、IDE 開発との統合を簡略化できます。 まず、リモート Git リポジトリをクローンします。その後、リポジトリ クローンを使用してノートブックを開くか作成し、 ノートブックをクラスターにアタッチ して、 ノートブックを実行できます

クラスターとライブラリ

Databricks コンピュートは、単一ノード クラスターから大規模なクラスターまで、あらゆるサイズのクラスターに コンピュート管理 を提供します。 クラスターのハードウェアとライブラリは、必要に応じてカスタマイズできます。 データサイエンティストは、通常、 クラスターを作成する か、既存の 共有クラスターを使用して作業を開始します。 クラスターにアクセスできるようになったら、 ノートブックをクラスターにアタッチ したり、クラスターで ジョブを実行 したりできます。

DatabricksクラスターはDatabricks Runtimeを使用します。Databricks Runtimeは、Apache Spark、Delta Lake、pandasなど、すぐに使える多くの人気ライブラリを提供しています。追加のサードパーティまたはカスタムPythonライブラリをインストールして、ノートブックやジョブで使用することもできます。

ビジュアライゼーション

Databricks Python ノートブックでは、さまざまな種類の ビジュアライゼーションが組み込まれています。 従来のビジュアライゼーションを使用することもできます。

サードパーティのライブラリを使用してデータを視覚化することもできます。一部はDatabricks Runtimeにプリインストールされていますが、カスタムライブラリをインストールすることもできます。人気のあるライブラリは以下のとおりです。

ジョブ

Databricks でDatabricks ジョブを作成して実行し、スケジュールまたはトリガーに従って Python ワークロードを自動化できます。 ジョブはノートブック、 Pythonスクリプト、 Python wheelファイルを実行できます。

  • UI 経由でジョブを作成する方法の詳細については、 「ジョブの作成」を参照してください。

  • Databricks 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エンドポイントとしてホストできるようになります。 詳細情報と例については、 を使用したML ライフサイクル管理MLflow またはMLflowPythonAPI ドキュメントを 参照してください。

一般的な機械学習ワークロードの入門については、以下のページを参照してください。

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 は、自動化と外部ツールとの統合をサポートする一連の SDK を提供します。 Databricks SDK を使用して、クラスターやライブラリ、コードやその他のワークスペース オブジェクト、ワークロードやジョブなどのリソースを管理できます。 Databricks SDK を参照してください。

IDE、開発者ツール、SDKの詳細については、「開発者ツールとガイダンス」を参照してください。

追加のリソース