マップ
Pydoc |
コレクション内の各要素に対して、単純な1対1のマッピング関数を適用します。
例
次の例では、アイコン、名前、期間を持つ農産物のPCollectionを含むパイプラインを作成します。次に、PCollection内のすべての要素を変換するために、さまざまな方法でMapを適用します。
Mapは、PCollection内の各入力要素に対して単一の要素を返す関数を受け入れます。
例1:事前に定義された関数を使用したMap
str.strip関数を使用します。これは、単一のstr要素を受け取り、strを出力します。入力要素の空白(改行やタブを含む)を削除します。
例2:関数を使用したMap
'#'、' '、'\n'文字を各要素から削除するstrip_header_and_newline関数を定義します。
例3:ラムダ関数を使用したMap
例2を簡素化するために、ラムダ関数を使用することもできます。
例4:複数の引数を使用したMap
Mapに複数の引数を持つ関数を渡すことができます。それらは、関数に追加の位置引数またはキーワード引数として渡されます。
この例では、stripはtextとcharsを引数として受け取ります。
例5:キーバリューペアに対するMapTuple
PCollectionが(key, value)ペアで構成されている場合は、MapTupleを使用してそれらを異なる関数引数に展開できます。
例6:シングルトンとしてのサイド入力を使用したMap
PCollectionに別の計算からの平均など、単一の値がある場合、PCollectionをシングルトンとして渡すと、その値にアクセスできます。
この例では、'# \n'という値をシングルトンとしてPCollectionに渡します。次に、その値をstr.stripメソッドの文字として使用します。
例7:イテレータとしてのサイド入力を使用したMap
PCollectionに複数の値がある場合は、PCollectionをイテレータとして渡します。これにより、必要に応じて要素に遅延的にアクセスするため、メモリに収まらない大きなPCollectionを反復処理できます。
注記:
beam.pvalue.AsList(pcollection)を使用してPCollectionをリストとして渡すことができますが、これにはすべての要素がメモリに収まる必要があります。
例8:辞書としてのサイド入力を使用したMap
PCollectionがメモリに収まるほど小さい場合、そのPCollectionは辞書として渡すことができます。各要素は(key, value)ペアでなければなりません。PCollectionのすべての要素は、これのためにメモリに収まる必要があります。PCollectionがメモリに収まらない場合は、代わりにbeam.pvalue.AsIter(pcollection)を使用してください。
例9:セットアップとバンドルコンテキストを使用したMap。
データベース接続など、コストのかかる共有オブジェクトが必要な場合は、Pythonコンテキストマネージャーのように呼び出されるバンドルまたはセットアップコンテキストとして渡すことができます。例:
関連トランスフォーム
- FlatMapは
Mapと同じ動作をしますが、各入力に対してゼロ個以上の出力を生成する場合があります。 - Filterは、関数が要素を出力するかどうかを決定する場合に役立ちます。
- ParDoは最も一般的な要素ごとのマッピング操作であり、複数の出力コレクションやサイド入力などの他の機能も含まれています。
Pydoc |
最終更新日:2024/10/31
必要な情報は見つかりましたか?
すべて役立ち、分かりやすかったですか?変更したい点があれば教えてください!


Pydoc