マップ
![]() |
コレクション内の各要素に対して、単純な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は最も一般的な要素ごとのマッピング操作であり、複数の出力コレクションやサイド入力などの他の機能も含まれています。
![]() |
最終更新日:2024/10/31
必要な情報は見つかりましたか?
すべて役立ち、分かりやすかったですか?変更したい点があれば教えてください!