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