ソースの最適化

Azure SQL Database を除くすべてのソースについて、選択した値として現在のパーティション分割の使用 の保持をお勧めします。 他のすべてのソース システムから読み取る場合、データ フローはデータのサイズに基づいてデータを自動的に均等に分割します。 データ 128 MB ごとに新しいパーティションが作成されます。 データのサイズが増加するにつれて、パーティションの数が増加します。

どのカスタム パーティション分割も、Spark がデータを読み取った 発生し、データ フローのパフォーマンスに悪影響を与えます。 データは読み取り時に均等にパーティション分割されるため、最初にデータシェイプとカーディナリティを理解しない限り、推奨されません。

Note

読み取り速度は、ソース システムのスループットによって制限される場合があります。

Azure SQL Database のソース

Azure SQL Database には、"ソース" パーティション分割と呼ばれる独自のパーティション分割オプションがあります。 ソースパーティション分割を有効にすると、ソース システムで並列接続を有効にすることで、Azure SQL Database からの読み取り時間を短縮できます。 パーティションの数とデータをパーティション分割する方法を指定します。 カーディナリティが高いパーティション列を使用します。 また、ソース テーブルのパーティション構成に一致するクエリを入力することもできます。

ヒント

ソースのパーティション分割では、SQL Server の I/O がボトルネックになります。 追加するパーティションが多すぎると、ソース データベースが飽和状態になる可能性があります。 通常、このオプションを使用する場合、4 つまたは 5 つのパーティションが理想的です。

Source partitioning

分離レベル

Azure SQL ソース システムでの読み取りの分離レベルは、パフォーマンスに影響します。 [Read uncommitted] (コミットされていない読み取り) を選択すると、パフォーマンスが最も速く、データベース ロックが防止されます。 SQL 分離レベルの詳細については、「分離レベルについて」を参照してください。

クエリを使用した読み取り

テーブルまたは SQL クエリを使用して Azure SQL Database から読み取ることができます。 SQL クエリを実行する場合は、変換を開始する前にクエリを完了する必要があります。 SQL クエリは、より高速に実行できる操作をプッシュダウンし、SELECT、WHERE、JOIN ステートメントなどの SQL Server から読み取られるデータの量を減らす場合に役立ちます。 操作をプッシュ ダウンすると、データがデータ フローに取り込まれる前に、変換の系列とパフォーマンスを追跡できなくなります。

Azure Synapse Analytics のソース

Azure Synapse Analytics を使用するとき、ソース オプションに [Enable staging](ステージングの有効化) という設定があります。 これにより、サービスは Stagingを使用して Synapse から読み取ることができます。これは、CETAS や COPY コマンドなどの最もパフォーマンスの高い一括読み込み機能を使用して、読み取りパフォーマンスを大幅に向上します。 Staging を有効にするには、データ フロー アクティビティの設定で Azure Blob Storage または Azure Data Lake Storage gen2 ステージングの場所を指定する必要があります。

Enable staging

ファイルベースのソース

Parquet と区切りテキスト

データ フローではさまざまなファイルの種類がサポートされますが、読み取りと書き込みの最適な時間を実現するために、Spark ネイティブの Parquet 形式をお勧めします。

一連のファイルで同じデータ フローを実行している場合は、ワイルドカード パスを使用して、またはファイルの一覧から読み取ることで、フォルダーから読み取ることをお勧めします。 1 つのデータ フロー アクティビティの実行で、バッチ内のすべてのファイルを処理できます。 これらの設定を構成する方法の詳細については、Azure Blob Storage コネクタ ドキュメントの「ソース変換」セクションを参照してください。

可能な場合、一連のファイルに対し、For Each アクティビティを使用してデータ フローを実行することは避けてください。 これにより、for-each の各イテレーションが独自の Spark クラスターを起動します。これは、多くの場合、不要であり、コストがかかる可能性があります。

インライン データセットと共有データセット

ADF データセットと Synapse データセットは、ファクトリとワークスペース内の共有リソースです。 ただし、区切りテキストと JSON ソースを使用して多数のソース フォルダーとファイルを読み取る場合は、Projection | スキーマ オプションダイアログ内で [ユーザー投影スキーマ] オプションを設定することで、データ フロー ファイルの検出のパフォーマンスを向上させることができます。 このオプションにより、ADF のデフォルトのスキーマ自動検出がオフになり、ファイル検出のパフォーマンスが大幅に向上します。 このオプションを設定する前に、ADF にプロジェクションのための既存のスキーマが割り当てられるように、必ずプロジェクションをインポートしてください。 このオプションはスキーマ ドリフトでは機能しません。

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