1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Databricksジョブにおけるループ処理アプローチの比較

Posted at

For eachタスク

結構最近のジョブの機能にFor each(それぞれ)タスクというものがあります。名前の通り、特定のタスクのそれぞれを処理するループを組むことができる機能です。

こちらでウォークスルーしています。ループしたいパラメータをリストで定義すれば、ロジックを実装したノートブックに対するループ処理を簡単に実装することができます。

capture.gif

SDKを用いた並列タスク

しかし、for eachタスクの登場前でも(ある意味力技で)ジョブでループ処理を実装することができていました。タスクは直列、並列に組み合わせることができるので、異なるパラメータを受け取るノートブックを並列に配置されたタスクに設定すれば、ループ処理を行うことができます。ただし、多数のタスクを手動で設定するのは手間なので、SDKを用いてプログラムからタスクを設定することをお勧めします。

Screenshot 2023-12-10 at 15.04.37.png

アプローチの比較

これら二つのアプローチには一長一短がありますので、要件に基づいて選択いただくことをお勧めします。

for eachタスク 並列タスク
計算リソース ループのそれぞれのイテレーションが割り当てられたリソースを共有します。同時実行性を上げるとリソースの競合が起きるので注意ください。 タスクごとにリソースを再利用、あるいは別のリソースを割り当てることができます。
失敗タスクの再実行 特定のイテレーションを再実行する機能がないので、自前で修復処理を実装する必要があります。 ジョブの修復で可能です。
タスクの作成 引数のリストを作成するだけで簡単にループ処理を実装できます。 タスクに分けてループを実装する際、個別のタスクを多数作る必要があります。SDKを用いてプログラム的に作成することをお勧めします。

簡単かつリトライの必要性のないワークロードであればfor eachタスクがお勧めですが、リトライ処理やリソース最適化が必要であれば、タスクを組み合わせてループ処理を組んだほうが良いかと思います。

はじめてのDatabricks

はじめてのDatabricks

Databricks無料トライアル

Databricks無料トライアル

1
1
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
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?