FlatMap

Pydoc Pydoc




コレクション内の各要素に対して、単純な1対多のマッピング関数を適用します。複数の要素は、結果のコレクションにフラット化されます。

次の例では、アイコン、名前、および期間を持つ農産物のPCollectionでパイプラインを作成します。次に、FlatMapを複数の方法で適用して、各入力要素ごとに0個以上の要素を結果のPCollectionに生成します。

FlatMapiterableを返す関数を受け入れます。出力iterableの各要素は、結果のPCollectionの要素になります。

例1:定義済みの関数を使用したFlatMap

単一のstr要素を受け取り、strlistを出力する関数str.splitを使用します。このパイプラインは、空白を使用して入力要素を分割し、0個以上の要素のリストを作成します。

例2:関数を使用したFlatMap

デリミター','を使用して入力str要素を分割し、strlistを出力する関数split_wordsを定義します。

例3:関数を使用しないFlatMap

FlatMapの一般的なユースケースは、反復可能なPCollectionを要素のPCollectionにフラット化することです。それを行うには、FlatMapに関数引数を指定しないでください。これにより、IDマッピング関数が使用されます。

例4:ラムダ関数を使用したFlatMap

この例では、strのリストのPCollectionstrPCollectionにフラット化します。各入力要素はすでにiterableであり、各要素は結果のPCollectionに必要なものです。受け取ったのと同じ入力要素を返すラムダ関数を使用します。

例5:ジェネレーターを使用したFlatMap

この例では、strのリストのPCollectionstrPCollectionにフラット化します。ジェネレーターを使用して入力リストを反復処理し、各要素を生成します。ジェネレーターで生成された各結果は、結果のPCollectionの要素になります。

例6:キーと値のペアに対するFlatMapTuple

PCollection(キー, 値)のペアで構成されている場合は、FlatMapTupleを使用して、それらを異なる関数引数にアンパックできます。

例7:複数の引数を持つFlatMap

複数の引数を持つ関数をFlatMapに渡すことができます。これらは、追加の位置引数またはキーワード引数として関数に渡されます。

この例では、split_wordsは引数としてtextdelimiterを取ります。

例8:シングルトンとしてのサイド入力を持つFlatMap

PCollectionに、別の計算からの平均値など、単一の値がある場合、その値をシングルトンとして渡すと、その値にアクセスできます。

この例では、','という値をシングルトンとしてPCollectionに渡します。次に、その値をstr.splitメソッドの区切り文字として使用します。

例9:イテレーターとしてのサイド入力を持つFlatMap

PCollectionに複数の値がある場合は、PCollectionイテレーターとして渡します。これにより、要素が必要に応じて遅延的にアクセスされるため、メモリに収まらない大きなPCollectionを反復処理できます。

: beam.pvalue.AsList(pcollection)を使用してPCollectionリストとして渡すことができますが、これにはすべての要素がメモリに収まる必要があります。

例10:辞書としてのサイド入力を持つFlatMap

PCollectionがメモリに収まるほど小さい場合は、そのPCollection辞書として渡すことができます。各要素は(キー, 値)のペアである必要があります。これには、PCollectionのすべての要素がメモリに収まる必要があることに注意してください。PCollectionがメモリに収まらない場合は、代わりにbeam.pvalue.AsIter(pcollection)を使用してください。

Pydoc Pydoc