FlatMap
Pydoc |
コレクション内の各要素に対して、単純な1対多のマッピング関数を適用します。複数の要素は、結果のコレクションにフラット化されます。
例
次の例では、アイコン、名前、および期間を持つ農産物のPCollectionでパイプラインを作成します。次に、FlatMapを複数の方法で適用して、各入力要素ごとに0個以上の要素を結果のPCollectionに生成します。
FlatMapはiterableを返す関数を受け入れます。出力iterableの各要素は、結果のPCollectionの要素になります。
例1:定義済みの関数を使用したFlatMap
単一のstr要素を受け取り、strのlistを出力する関数str.splitを使用します。このパイプラインは、空白を使用して入力要素を分割し、0個以上の要素のリストを作成します。
例2:関数を使用したFlatMap
デリミター','を使用して入力str要素を分割し、strのlistを出力する関数split_wordsを定義します。
例3:関数を使用しないFlatMap
FlatMapの一般的なユースケースは、反復可能なPCollectionを要素のPCollectionにフラット化することです。それを行うには、FlatMapに関数引数を指定しないでください。これにより、IDマッピング関数が使用されます。
例4:ラムダ関数を使用したFlatMap
この例では、strのリストのPCollectionをstrのPCollectionにフラット化します。各入力要素はすでにiterableであり、各要素は結果のPCollectionに必要なものです。受け取ったのと同じ入力要素を返すラムダ関数を使用します。
例5:ジェネレーターを使用したFlatMap
この例では、strのリストのPCollectionをstrのPCollectionにフラット化します。ジェネレーターを使用して入力リストを反復処理し、各要素を生成します。ジェネレーターで生成された各結果は、結果のPCollectionの要素になります。
例6:キーと値のペアに対するFlatMapTuple
PCollectionが(キー, 値)のペアで構成されている場合は、FlatMapTupleを使用して、それらを異なる関数引数にアンパックできます。
例7:複数の引数を持つFlatMap
複数の引数を持つ関数をFlatMapに渡すことができます。これらは、追加の位置引数またはキーワード引数として関数に渡されます。
この例では、split_wordsは引数としてtextとdelimiterを取ります。
例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)を使用してください。
関連する変換
- Filter は、関数が要素を出力するかどうかを決定するだけでよい場合に役立ちます。
- ParDo は最も一般的な要素単位のマッピング操作であり、複数の出力コレクションやサイド入力などの機能も含まれています。
- Map は同じように動作しますが、各入力に対して正確に 1 つの出力を生成します。
Pydoc |
最終更新日: 2024/10/31
お探しの情報はすべて見つかりましたか?
すべて役に立ち、分かりやすかったですか?変更したい点はありますか?ぜひお聞かせください!


Pydoc