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 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 オープンソース プロジェクトでは、Pandas API on Spark に切り替えることが推奨されています。Pandas API on Spark は、 Databricks Runtime 10.0 (サポート対象外) 以降を実行するクラスターで使用できます。 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 と同様の機能を提供しますが、ビッグデータを使用した組み込みのビジュアライゼーションやデバッグとパフォーマンス モニタリングのための 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での機械学習
ディープラーニングモデルのトレーニング:ディープラーニング
ハイパーテスト: Hyperoptハイパーを並列化する
グラフ アナリティクス: 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は、自動化と外部ツールとの統合をサポートする一連の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とヒント