パイプラインでのデータ フローの使用

複数のデータ フローを持つ複雑なパイプラインを構築する場合、論理フローがタイミングとコストに大きな影響を与える可能性があります。 このセクションでは、さまざまなアーキテクチャ戦略の影響について説明します。

データ フローの並列実行

複数のデータ フローを並列に実行すると、アクティビティごとに個別の Spark クラスターがサービスによってスピンアップされます。 これにより、各ジョブを分離して並列に実行できますが、複数のクラスターが同時に実行されることになります。

データ フローを並列実行する場合、使用されないウォーム プールが複数発生してしまうため、Azure IR の time to live プロパティを有効にしないことをお勧めします。

ヒント

各アクティビティで同じデータ フローを複数回実行するのではなく、データ レイクにデータをステージして、ワイルドカード パスを使用してデータを 1 つのデータ フローで処理します。

データ フローの順次実行

データ フロー アクティビティを順番に実行する場合は、Azure IR 構成で TTL を設定することをお勧めします。 サービスによってコンピューティング リソースが再利用され、クラスターの起動時間が短縮されます。 各アクティビティは引き続き分離され、実行のたびに新しい Spark コンテキストを受け取ります。

単一データ フローのオーバーロード

すべてのロジックを単一データ フロー内に配置すると、サービスによって単一の Spark インスタンスでジョブ全体が実行されます。 これはコストを削減する方法のように思えるかもしれませんが、さまざまな論理フローを組み合わせるため、監視やデバッグが困難になる可能性があります。 1 つのコンポーネントが失敗すると、ジョブの他のすべての部分も失敗します。 ビジネス ロジックの独立したフロー別にデータ フローを整理することをお勧めします。 データ フローが大きくなりすぎた場合、コンポーネントを分割すると、監視とデバッグが容易になります。 データ フロー内の変換の数にはハード制限はありませんが、多すぎるとジョブが複雑になります。

シンクを並列実行する

データ フロー シンクの既定の動作では、各シンクが順番に実行され、シンクでエラーが発生した場合はデータ フローが失敗します。 さらに、データ フロー プロパティでシンクに異なる優先順位を設定しない限り、すべてのシンクは既定で同じグループに設定されます。

データ フローでは、UI デザイナーのデータ フロー プロパティのタブで、シンクをグループにまとめることができます。 シンクの実行順序を設定できるほか、同じグループ番号を使用してシンクをグループ化できます。 グループの管理に役立つように、シンクを同じグループで並列実行するようにサービスに要求できます。

シンクのプロパティ セクションにある、パイプラインのデータ フロー実行アクティビティでも、シンクの並列読み込みを有効にできます。 並列実行を有効にすると、データ フローは、接続されているシンクに (順次ではなく) 同時に書き込まれるように指示されます。 並列実行のオプションを利用するには、シンクがグループ化され、新しい分岐または条件分割を使用して同じストリームに接続されている必要があります。

次のステップ

パフォーマンスに関する Data Flow のその他の記事を参照してください。