Migrate single node workloads to Databricks | Databricks on AWS [2022/1/24時点]の翻訳です。
Databricksクイックスタートガイドのコンテンツです。
本書は抄訳であり内容の正確性を保証するものではありません。正確な内容に関しては原文を参照ください。
本書では、シングルノードのワークロードをDatabricksに移行する際に生じる典型的な疑問に答えます。
20ノードのSparkクラスターを作成したのですが、私のpandasのコードが速くなりません。何が悪いのでしょうか?
シングルノードでの動作を前提としたライブラリを使用しており、Databricksに移行しても、これらは分散処理されません。Apache SparkのPython APIであるPySparkを使ってご自身のコードを書き直す必要があります。
あるいは、Apache Sparkデータフレームのデータにアクセスするために、pandasデータフレームAPIを使用できるPandas API on Sparkを活用することができます。
私が愛するアルゴリズムがsklearnにありますが、Spark MLではサポートしていません(例えば、DBSCAN)。どうすればこのアルゴリズムを使いつつSparkのメリットを活かせるのでしょうか?
- Sparkクラスターでタスクを分散するためのjoblibのApache Sparkバックエンドであるjoblib-sparkを使用します。
- pandasユーザー定義関数を使います。
- ハイパーパラメーターチューニングにはHyperoptを使います。
Spark MLにおけるデプロイメントオプションには何がありますか?
ベストなデプロイメントの選択肢はアプリケーションのレーテンシーの要件に依存します。
- バッチ予測に関しては、推論、予測のためにモデルをデプロイするを参照ください。
- ストリーミングアプリケーションに関しては、構造化ストリーミングを参照ください。
- 低レーテンシーのモデル推論に関しては、MLflowモデルサービング、あるいはAmazon SageMakerのようなクラウドプロバイダーのソリューションの活用を検討ください。
pandasや他のライブラリをどのようにインストール、アップデートすることができますか?
ライブラリをインストール、アップデートする方法はいくつか存在します。
- クラスターを利用する全てのユーザーが使用するライブラリをインストール、アップデートするにはクラスターライブラリを使います。
- 特定のノートブックでのみPythonライブラリやライブラリのバージョンを使えるようにするには、ノートブックスコープライブラリを使います。
ドライバーノードからどのようにDBFSのデータを参照できますか?
ファイルパスの先頭に/dbfs/
を追加してください。ローカルファイルAPIをご覧ください。
どのようにデータをDatabricksに取り込みますか?
-
マウントします。DBFSへのオブジェクトストレージのマウントをご覧ください。
-
データタブを使います。データのインポート、読み込み、変更をご覧下さい。
-
%sh wget
を使います。データファイルのURLを参照できるのであれば、Sparkドライバーノードにデータをインポートするために
%sh wget <url>/<filename>
を使用することができます。
注意
セルの出力には、Saving to: '<filename>'
と表示されますが、実際には、file:/databricks/driver/<filename>
に保存されます。
例えば、https://data.cityofnewyork.us/api/views/25th-nujf/rows.csv?accessType=DOWNLOAD
のファイルを以下のコマンドでダウンロードしたとします。
%sh wget https://data.cityofnewyork.us/api/views/25th-nujf/rows.csv?accessType=DOWNLOAD
このデータをロードするには以下を実行します。
pandas_df = pd.read_csv("file:/databricks/driver/rows.csv?accessType=DOWNLOAD", header='infer')