Python開発者のためのDatabricks
このセクションでは、Python言語を使用してDatabricksでノートブックとジョブを開発するためのガイドを提供します。最初のサブセクションでは、一般的なワークフローとタスクのチュートリアルへのリンクを提供します。2番目のサブセクションでは、API、ライブラリ、主要なツールへのリンクを提供します。
基本的なワークフローは以下のとおりです。
コードのインポート: ファイルまたは Git リポジトリから独自のコードをインポートするか、以下にリストされているチュートリアルを試してください。 Databricks では、インタラクティブな Databricks ノートブックを使用して学習することをお勧めします。
クラスターでコードを実行する: 独自のクラスターを作成するか、共有クラスターを使用するためのアクセス許可があることを確認します。 ノートブックをクラスターにアタッチし、ノートブックを実行します。
さらに、より具体的なトピックに分岐して進むこともできます。
Apache Spark を使用した大規模なデータ セットの操作
機械学習を使用して データを分析する
チュートリアル
以下のチュートリアルでは、一般的なワークフローについて学習するためのサンプル コードとノートブックを提供します。 ノートブックの例をワークスペースにインポートする手順については、「 ノートブックのインポート 」を参照してください。
インタラクティブなデータサイエンスと機械学習
データの準備と分析のためのApache Spark DataFramesの使用を開始する: アナリティクス: Apache Spark DataFramesを使用してデータを読み込み、変換する
チュートリアル: Databricks でのエンドツーエンドの機械学習モデル。 その他の例については、「 チュートリアル: 機械学習の概要」および機械学習フロー ガイドの 「クイック スタート Python」を参照してください。
Databricks AutoMLを使用すると、独自のデータセットで機械学習モデルの開発をすぐに始めることができます。ガラスボックスアプローチにより、複製、変更、再実行が可能な、完全な機械学習ワークフローを備えたノートブックが生成されます。
データエンジニアリング
チュートリアル: Apache Spark DataFramesを使用してデータをロードおよび変換する では、データ準備とアナリティクスのためのApache Spark DataFramesについて学習するのに役立つチュートリアルが提供されています。
Pythonノートブックでデバッグを行う
この例は、Python で デバッガー (pdb)Databricks を使用する方法を示しています。Python デバッガーを使用するには、Databricks Runtime 11.3 LTS 以上を実行している必要があります。
Databricks Runtime 12.2 LTS 以降では、 変数エクスプローラーを使用して、ノートブック UI で Python 変数の現在の値を追跡できます。 変数エクスプローラーを使用すると、ブレークポイントをステップ実行しながら Python 変数の値を観察できます。
注
breakpoint()
はIPythonではサポートされていないため、Databricksノートブックでは機能しません。breakpoint()
の代わりにimport pdb; pdb.set_trace()
を使うこともできます。
リファレンス
以下のサブセクションでは、Pythonを使用してDatabricksでの開発を始めるのに役立つ主要な機能とヒントを一覧表示しています。
Python API
Databricks の外部で実行される Python コードは通常、Databricks 内で実行でき、その逆も可能です。 既存のコードがある場合は、それを Databricks にインポートするだけで開始できます。 詳細については、以下の「ノートブックおよび Databricks Git フォルダーを使用したコードの管理」を参照してください。
Databricksは、単一マシンのワークロードと分散Pythonワークロードの両方を実行できます。単一マシンのコンピューティングの場合は、通常どおりPythonのAPIとライブラリを使用できます。たとえば、pandasとscikit-learnは「そのまま機能」します。分散Pythonワークロードの場合、Databricksはすぐに使用できる2つの一般的なAPI、Pandas API on SparkとPySparkを提供しています。
Pandas API on Spark
注
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 と同様の機能を提供しますが、MB を使用した組み込みの視覚化、デバッグとパフォーマンス モニタリングのための 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 Runtimeリリースノートのバージョンと互換性のデフォルトライブラリから始めます。機械学習ワークロードには、機械学習にDatabricks Runtime を使用します。プレインストールされているライブラリの完全な一覧については、「 Databricks Runtime リリースノートのバージョンと互換性」を参照してください。
ノートブックスコープのPythonライブラリを使用して環境をカスタマイズすることができます。これにより、PyPIや他のリポジトリのライブラリを使用してノートブックやジョブ環境を変更することができます。
%pip install my_library
マジックコマンドを使用すると、現在アタッチされているクラスター内のすべてのノードにmy_library
がインストールされますが、共有クラスター上の他のワークロードには干渉しません。必要に応じて、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 エンドポイントとしてホストできるようになります。 詳細な情報と例については、 MLflow を使用した機械学習ライフサイクル管理またはMLflow Python API ドキュメントを参照してください。
一般的な機械学習ワークロードの入門については、以下のページを参照してください。
scikit-learnのトレーニングとMLflowによるトラッキング:10分のチュートリアル:scikit-learnを使用したDatabricksでの機械学習
ディープラーニングモデルのトレーニング:ディープラーニング
ハイパーパラメーターチューニング:scikit-learnとMLflowを使用したハイパーパラメーターチューニングの並列化
IDE、開発者ツール、SDK
Databricksノートブック内でPythonコードを開発するだけでなく、PyCharm、Jupyter、Visual Studio Codeなどの統合開発環境(IDE)を使用して外部で開発することもできます。外部開発環境とDatabricksの間で作業を同期するには、いくつかのオプションがあります。
コード: Git を使用してコードを同期できます。 「Databricks Git フォルダーと Git の統合」を参照してください。
ライブラリとジョブ: 外部でライブラリ ( Python wheelファイルなど) を作成し、 Databricksにアップロードできます。 これらのライブラリは、Databricks ノートブック内にインポートすることも、ジョブの作成に使用することもできます。 「ライブラリ」と「Databricks ジョブの作成と実行」を参照してください。
リモートマシン実行: ローカルIDEからコードを実行して、インタラクティブな開発とテストを行うことができます。 IDE は Databricks と通信して、Apache Spark と大規模な計算を Databricks クラスターで実行できます。 Databricks Connect を使用してこの接続を作成する方法については、「Databricks で IDE を使用する」を参照してください。
Databricksは、自動化と外部ツールとの統合をサポートする一連のSDKを提供しています。Databricks SDKを使用すると、クラスター、ライブラリ、コード、その他のワークスペースオブジェクト、ワークロード、ジョブなどのリソースを管理できます。「Databricks SDK」参照してください。
IDE、開発者ツール、SDKの詳細については、「開発者ツールとガイダンス」を参照してください。
追加のリソース
Databricks Academyでは、多くのトピックについて、自分のペースで進められるインストラクター主導のコースを提供しています。
PySparkとpandas間の相互運用性をサポートする機能
PythonとSQLデータベースの接続
Databricks SQL Connector for Pythonを使用すると、Pythonコードを使用してDatabricksリソースでSQLコマンドを実行できます。
pyodbc を使用すると、ローカルの Python コードから ODBC を介して Databricks レイクハウスに格納されているデータに接続できます。
PythonワークロードをDatabricksに移行するためのFAQとヒント