トランスフォーメーション > ソーストランスフォーメーション > パーティション
  

パーティション

パーティションを使用して、マッピングタスクのパフォーマンスを最適化できます。
マッピングタスクで大規模なデータセットが処理される場合、または、複雑な計算を実行するトランスフォーメーションが含まれる場合は、タスクの処理に時間がかかる場合があります。複数のパーティションを使用すると、マッピングタスクはデータを複数のパーティションに分割し、それらのパーティションを同時に処理します。これにより、パフォーマンスを最適化できます。すべてのソースタイプがパーティション化をサポートしているわけではありません。
Mapping Designerでソーストランスフォーメーションを設定する際に、パーティション化を有効にします。ソーストランスフォーメーションにパーティションを設定すると、マッピング全体でパーティション化されます。
マッピング内のすべてのデータフローにわたるそれぞれのソーストランスフォーメーションには、同じ数のパーティションが含まれている必要があります。
ソースのパーティション化を有効にするには、[パーティション化]タブでパーティション化方法を選択します。選択できるパーティション化方法は、ソースタイプによって異なります。さまざまなタイプのソースのパーティション化の詳細については、目的のコネクタのヘルプを参照してください。
ソースタイプに応じて、次のいずれかのパーティション化方法を選択できます。
なし
マッピングタスクが、単一のパーティションですべてのデータを処理します。これがデフォルトのオプションです。
固定
マッピングタスクが、指定したパーティション数に基づいてデータの行を分散します。最大で64のパーティションを指定できます。
この方法は、フラットファイルソースなどの、キー範囲によるパーティション化ができないソースタイプや、キー範囲のパーティション化をサポートしないトランスフォーメーションがマッピングに含まれる場合に使用します。
マッピングで渡されるレコードの数を考慮して、マッピングに適したパーティションの数を決定してください。レコードが少ない場合、パーティション化による利点はあまりありません。
マッピングに複数のソースが含まれる場合は、ソースごとに同じ数のパーティションを指定します。
キーの範囲
マッピングタスクが、パーティションキーとして定義したフィールドに基づいてデータの行を分散します。ソース内の1つのフィールドをパーティションキーとして選択してから、パーティションキーの値の範囲を定義します。
この方法は、表形式のソースに使用できます(リレーショナル、Google BigQuery、およびJDBC V2のソースなど)。
キー範囲には、次のデータ型を使用できます。
マッピングに複数のソースが含まれる場合は、ソースごとに同じ数のキー範囲を使用します。
パススルー
マッピングタスクが、パーティション間で行を再分散せずにデータを処理します。単一のパーティション内のすべての行が、そのパーティション内に留まります。パフォーマンスを向上させるために新しいパーティションを作成して、パーティション間のデータの分散を変更しない場合に、パススルーパーティション化を選択します。
この方法は、Amazon S3、Netezza、およびTeradataなどのソースに使用できます。
動的
マッピングタスクが、ソースサイズに基づいて、実行時に作成するパーティションの最適な数を決定します。
次のような状況では、マッピングをパーティション化できません。
パーティションを設定したら、Mapping Designerでマッピングを保存および実行して、パーティション設定を検証してください。

パーティション化に関するルールおよびガイドライン

マッピングをパーティション化する前に、次の規則とガイドラインに注意してください。

パーティション化の例

次の例は、マッピングでパーティション化を設定する方法を示します。

フラットファイルソースを使用したパーティション化

1GBの大容量フラットファイルソースを使用するマッピングタスクがあるとします。パフォーマンスを最適化するために、ソーストランスフォーメーション内に2つのパーティションを指定します。
次の図に示すように、ソーストランスフォーメーションの[パーティション化]タブで、固定パーティション化を選択してパーティションの数を入力します。
ソーストランスフォーメーションの[パーティション化]タブで、パーティション化タイプは「固定」、パーティション数は「2」に設定されています。

リレーショナルデータベースソースを使用したキー範囲パーティション化

顧客の名前、住所、および購入履歴がリレーショナルデータベースソースに格納されているとします。郵便番号に基づいて、次の範囲を使用してソースデータを3つのパーティションに分けることにしました。
ソーストランスフォーメーションの[パーティション化]タブで、キー範囲パーティション化を選択し、パーティションキーとしてBILLINGPOSTALCODEフィールドを選択します。次の図に示すように、3つのキー範囲を追加して3つのパーティションを作成します。
ソーストランスフォーメーションの[パーティション化]タブで、パーティション化タイプが「キー範囲」にされ、BILLINGPOSTALCODEカラムがパーティションキーとして選択されています。各パーティションの開始範囲と終了範囲カラムは、各パーティションの値の範囲を定義します。最初のパーティションでは、開始範囲が空白なので、最小値が開始値として使用されます。3番目のパーティションでは、終了範囲は空白なので、最大値は終了値として使用されます。
1つ目のパーティションでは、開始の値を空白にして最小値を設定します。最後のパーティションでは、終了値を空白にして最大値を設定します。
これらの値を使用して、郵便番号が0から30000までのレコードは1つ目のパーティション、郵便番号が30000から50000までのレコードは2つ目のパーティション、郵便番号が50000以降のレコードは3つ目のパーティションで処理されます。
設定したマッピングを保存して実行し、パーティションを検証します。