LoginSignup
1
0

More than 1 year has passed since last update.

Python開発者向けDatabricksのご紹介

Last updated at Posted at 2022-11-04

Databricks for Python developers | Databricks on AWS [2022/11/3時点]の翻訳です。

本書は抄訳であり内容の正確性を保証するものではありません。正確な内容に関しては原文を参照ください。

本書では、Python言語を用いたDatabricksにおけるノートブックやジョブの開発に対するガイドを提供します。最初のサブセクションでは、一般的なワークフローやタスクに関するチュートリアルへのリンクを提供します。二つ目のサブセクションでは、API、ライブラリ、キーとなるツールへのリンクを提供します。

スタートする際の基本的なワークフローは以下となります。

チュートリアル

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

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

データエンジニアリング

プロダクションの機械学習と機械学習オペレーション

Pythonノートブックのデバッグ

以下のサンプルノートブックでは、DatabrikcksノートブックでPythonデバッガー(pdb)をどの様に使うのかを説明しています。Pythonデバッガーを使うには、Databricksランタイム11.2以降が必要となります。

Pythonデバッガーサンプルノートブック

注意
breakpoint()IPythonでサポートされておらず、Databricksノートブックでは動作しません。breakpoint()の代わりにimport pdb; pdb.set_trace()を使うことができます。

リファレンス

以降のサブセクションでは、DatabricksでPythonを用いた開発を始める際に役立つキーの機能とティップスを説明しています。

Python API

Databricksの外で動作するPythonコードは、通常はDatabricks内で実行することができ、逆もまた然りです。既存コードがあるのであれば、スタートするにはDatabricksにインポートするだけです。詳細に関しては、ノートブックとDatabricks Reposによるコード管理をご覧ください。

Databricksは、シングルマシンと分散Pythonワークロードの両方で実行することができます。シングルマシンの処理においては、通常通りPython APIとライブラリを使用することができます。例えば、pandasやscikit-learnは「普通に動作します」。分散Pythonワークロードに関しては、Databricksはすぐに利用できる2つの人気のあるAPIを提供します。Pandas API on SparkとPySparkです。

SparkにおけるPandas API

注意
Koalasオープンソースプロジェクトでは、Pandas API on Sparkに切り替えることを推奨しています。Pandas API on SparkはDatabricks Runtime 10.0 (Unsupported)以降で使用することができます。Databricks Runtime 9.1 LTS以前が実行されているクラスターにおいては、代わりにKoalasを使ってください。

pandasは、データ分析やデータ操作を行うデータサイエンティストで広く使われているPythonパッケージです。しかし、pandasはビッグデータに対してスケールしません。Pandas API on Sparkは、Apache Spark上で動作するpandasと同等のAPIを提供することでこのギャップを埋めます。このオープンソースのAPIは、pandasには慣れているがApache Sparkには慣れていないデータサイエンティストにとっては理想的な選択肢となります。

PySpark API

PySparkはApache Sparkに対する公式のPython APIです。このAPIはPandas API on Sparkよりも優れた柔軟性を提供します。

ノートブックとDatabricks Reposによるコード管理

DatabricksノートブックはPythonをサポートしています。これらのノートブックはJupyterと同じ様な機能を提供しますが、ビッグデータを用いたビルトインのビジュアライゼーション、デバッグやパフォーマンス監視のためのApache Sparkインテグレーション、機械学習エクスペリメントのトラッキングのためのMLflowインテグレーションのような機能が追加されています。ノートブックをインポートすることから始めましょう。クラスターへのアクセス権を得たら、クラスターにノートブックをアタッチし、ノートブックを実行します。

ティップス
ノートブックの状態を完全にリセットするには、iPythonカーネルを再起動することが有用です。Jupyterのユーザーにとっての、Jupyterの「カーネルの再起動」オプションは、Databrikcsにおけるノートブックのデタッチ、再アタッチに該当します。Pythonノートブックでカーネルを再起動するには、左上のクラスタードロップダウンをクリックし、Detach & Re-attachをクリックします。これによって、ノートブックがクラスターからデタッチ・再アタッチされ、Pythonプロセスが再起動します。

Databricks Reposを用いることで、ユーザーはノートブックや他のファイルをGitリポジトリと同期できる様になります。Databricks Reposはコードのバージョン管理やコラボレーションの役に立ち、コードのすべてのリポジトリのDatabricksへのインポート、過去のノートブックのバージョンの参照、IDE開発とのインテグレーションをシンプルにします。リモートGitリポジトリのクローンからスタートしましょう。リポジトリクローンでノートブックをオープンするか作成し、クラスターにノートブックをアタッチし、ノートブックを実行します。

クラスターとライブラリ

Databricksクラスターは、シングルノードクラスターから大規模クラスターに至る任意のサイズでのクラスターの計算資源の管理を行います。必要に応じてクラスターのハードウェアやライブラリをカスタマイズすることができます。通常データサイエンティストは、クラスターを作成するか既存の共有クラスターを使用するところから作業を開始します。クラスターにアクセスできる様になったら、クラスターにノートブックをアタッチし、クラスターでジョブを実行します。

Databricksクラスターは、Apache Spark、Delta Lake、pandasを含む人気のある数多くのライブラリをすぐに利用できる様にこれらを提供するDatabricksランタイムを使用します。また、ノートブックやジョブで使用できる様に追加のサードパーティライブラリやカスタムPythonライブラリをインストールすることができます。

  • Databricksランタイムのデフォルトライブラリからスタートします。機械学習ワークロードにはDatabricks機械学習ランタイムを使用します。事前インストールされているライブラリの完全な一覧に関しては、Databricks runtime releasesをご覧ください。
  • PyPIや他のリポジトリにあるライブラリを用いてノートブックやジョブの環境を変更することができる、ノートブックスコープPythonライブラリを用いて環境をカスタマイズします。%pip install my_libraryマジックコマンドは、あなたが現在アタッチしているクラスターのすべてのノードにmy_libraryをインストールしますが、共有クラスターの他のワークロードには干渉しません。
  • 必要に応じて非Pythonのライブラリをクラスターライブラリとしてインストールします。
  • 詳細に関しては、ライブラリをご覧ください。

ビジュアライゼーション

DatabricksのPythonノートブックには様々なタイプのビジュアライゼーションのビルトインサポートがあります。また、レガシーなビジュアライゼーションを使うこともできます。

また、サードバーティライブラリを使ってデータを可視化することができます。いくつかはDatabricksランタイムに事前インストールされていますが、カスタムライブラリをインストールすることもできます。有名な選択肢には以下の様なものがあります。

ジョブ

Databricksジョブを用いることで、Pythonワークロードをスケジューリングあるいは起動することができます。ジョブでは、ノートブック、Pythonスクリプト、Python wheelsを実行することができます。

  • UIからのジョブ作成方法については、ジョブの作成をご覧ください。
  • Jobs API 2.1を用いて、ジョブの作成、編集、削除が可能です。
  • Jobs CLIを用いることで、Jobs APIを呼び出すための便利なコマンドラインインタフェースを使用することができます。

ティップス
ノートブックではなくPythonスクリプトをスケジューリングする際、create jobのリクエストボディのtasksの下のspark_python_taskフィールドを使用します。

機械学習

Databricksでは、表形式データに対する従来の機械学習(ML)、コンピュータービジョンに対するディープラーニング、自然言語処理、レコメンデーションシステム、グラフ解析などを含むさまざまな機械学習ワークロードをサポートしています。Databricksにおける機械学習の一般的な情報については、Databricks機械学習ガイドをご覧ください。

MLアルゴリズムに関しては、scikit-learn、TensorFlow、Keras、PyTorch、Apache Spark MLlib、XGBoostのような人気のあるPythonツールを含むDatabricks機械学習ランタイムに事前インストールされているライブラリを使うことができます。カスタムライブラリをインストールすることもできます。

機械学習オペレーション(MLOps)に関しては、DatabricksではオープンソースライブラリであるMLflowのマネージドサービスを提供しています。MLflowトラッキングを用いることで、モデルの開発を記録し、再利用なフォーマットでモデルを保存することができます。MLflowモデルレジストリを用いることで、モデルのプロダクションへのプロモートを管理、自動化することができます。そして、ジョブサーバレスリアルタイム推論によるモデルサービングや、クラシックMLflowモデルサービングを用いることで、バッチやストリーミングジョブ、RESTエンドポイントとしてモデルをホストすることができます。詳細とサンプルに関しては、Databricks MLflowガイドMLflow Python API docsをご覧ください。

一般的な機械学習ワークロードをスタートするには、以下のページを参照ください。

IDE、開発ツール、API

DatabricksノートブックでPythonコードを開発することに加え、PyCharm、Jupyter、Visual Studio Codeのような外部の統合開発環境(IDE)を用いて開発を行うことができます。外部の開発環境とDatabrikcsの間で成果物を同期するにはいくつかの選択肢があります。

  • コード: Gitを用いてコードを同期することができます。Databricks ReposによるGit連携をご覧ください。
  • ライブラリとジョブ: 外部で(wheelsのような)ライブラリを作成し、Databricksにアップロードすることができます。これらのライブラリは、Databricksノートブックでインポートすることができ、ジョブ作成に使用することもできます。Databricksにおけるライブラリ管理Databricksにおけるジョブ管理をご覧ください。
  • リモードマシンでの実行: インタラクティブな開発やテストのためにローカルのIDEからコードを実行することができます。IDEはDatabricksクラスターで大規模な計算処理を実行するために、Databricksとコミュニケーションすることができます。この接続を生成するためにどの様にDatabricks Connectを使うのかを学ぶには、Use IDEs with Databricksをご覧ください。

Databricksでは、自動化と外部のツールとの連携をサポートするREST APIの完全なセットを提供しています。クラスター、ライブラリ、コードや他のワークスペースオブジェクト、ワークロードやジョブの様なリソースを管理するためにAPIを活用することができます。REST API (latest)をご覧ください。

IDE、開発ツール、APIの詳細については、Developer tools and guidanceをご覧下さい。

その他のリソース

Databricks 無料トライアル

Databricks 無料トライアル

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0