マップ

Pydoc 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に複数の引数を持つ関数を渡すことができます。それらは、関数に追加の位置引数またはキーワード引数として渡されます。

この例では、striptextcharsを引数として受け取ります。

例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コンテキストマネージャーのように呼び出されるバンドルまたはセットアップコンテキストとして渡すことができます。例:

Pydoc Pydoc