データ プロセッサでのパーティション分割とは

重要

Azure Arc によって有効にされる Azure IoT Operations Preview は、 現在プレビュー段階です。 運用環境ではこのプレビュー ソフトウェアを使わないでください。

一般公開リリースが利用可能になった場合は、新しい Azure IoT Operations インストールをデプロイする必要があります。プレビュー インストールをアップグレードすることはできません。

ベータ版、プレビュー版、または一般提供としてまだリリースされていない Azure の機能に適用される法律条項については、「Microsoft Azure プレビューの追加使用条件」を参照してください。

データ プロセッサ パイプラインでは、パーティション分割によって受信データが個別のパーティションに分割され、データの並列処理が可能になります。 データの並列処理により、スループットが向上し、待機時間が短縮されます。 パーティション分割は、最後の既知の値ステージや集計ステージなどのパイプライン ステージがデータを処理する方法にも影響します。

パーティション分割の概念

データ プロセッサでは、次の 2 つのパーティション分割の概念が使用されます。

  • システム内の実際のデータ ストリームに対応する物理パーティション。
  • 一緒に処理される概念データ ストリームに対応する論理パーティション。

データ プロセッサ パイプラインは、パーティションを論理パーティションとしてユーザーに公開します。 基になるシステムは、これらの論理パーティションを物理パーティションにマップします。

パイプラインのパーティション分割戦略を指定するには、次の 2 つの情報を指定します。

  • パイプラインの物理パーティションの数。
  • パーティション分割の種類と、各受信メッセージの論理パーティションを計算する式を含むパーティション分割戦略。

シナリオに適したパーティション数とパーティション式を選択することが重要です。 データ プロセッサは、同じ論理パーティション内のデータの順序を保持し、同じ論理パーティション内のメッセージを、最後の既知の値ステージや集計ステージなどのパイプライン ステージで結合できます。 物理パーティション数は変更できません。パイプラインのスケール制限が決定されます。

パイプラインのパーティション分割の効果を示す図。

パーティション分割構成

パイプライン内でのパーティション分割は、パイプラインの入力ステージで構成されます。 入力ステージは、受信メッセージからパーティション キーを計算します。 ただし、パーティション分割はパイプライン内の他のステージに影響します。

パーティション分割の構成には、次のものが含まれます。

フィールド Description 必要 Default
[パーティション数] データ プロセッサ パイプライン内の物理パーティションの数。 はい 該当なし 3
使用する論理パーティション分割の種類: パーティション id またはパーティション key はい key key
Expression パーティション id またはパーティション key を計算するために受信メッセージに対して実行する jq 式。 はい 該当なし .topic

データ プロセッサ パイプラインに到着したメッセージ全体に適用される jq 式 を指定して、パーティション キーまたはパーティション ID を生成します。 このクエリの出力は、128 文字以下にする必要があります。

パーティションの種類

構成できるパーティション分割の種類は 2 つあります。

パーティション キー

各メッセージの論理パーティション キー文字列を動的に計算する jq 式を指定します。

  • パーティション マネージャーは、パーティション マネージャーによって物理パーティションにパーティション キーを自動的に割り当てます。
  • 最後の既知の値や集計など、関連付けられたすべてのデータは、論理パーティションにスコープが設定されます。
  • 各論理パーティション内のデータの順序が保証されます。

この種類のパーティション分割は、データの論理的なグループが数十個以上ある場合に最も便利です。

パーティション ID

たとえば、メッセージごとに数値物理パーティション ID を動的に計算する jq 式を指定します (たとえば .topic.assetNumber % 8)。

  • メッセージは、指定した物理パーティションに配置されます。
  • 関連付けられたすべてのデータは、物理パーティションにスコープが設定されます。

この種類のパーティション分割は、データの論理グループが少数ある場合や、スケーリングと作業の分散を正確に制御する場合に最適です。 生成されるパーティション ID の数は整数で、値が 'partitionCount' – 1 を超えてはなりません。

考慮事項

パイプラインのパーティション分割戦略を選択する場合:

  • データを MQTT ブローカー トピックから受け取ると、データの順序は論理パーティション内に保持されます。
  • 受信データの性質と目的の結果に基づいてパーティション分割戦略を選択します。 たとえば、最後の既知の値ステージと集計ステージは、各論理パーティションに対して操作を実行します。
  • すべてのパーティションにデータを均等に分散するパーティション キーを選択します。
  • パーティション数を増やすと、パフォーマンスが向上しますが、リソースもより多く消費されます。 要件と制約に基づいて、このトレードオフのバランスを取ります。