特定のキーのデータが集約されていることを確認する必要があるため、私のアルゴリズムでは現在 nr_reduces 1 を使用しています。
入力を次の反復に渡すには、「chain_reader」を使用する必要があります。ただし、マッパーからの結果は単一の結果リストであり、これは次のマップの反復が単一のマッパーとして行われることを意味しているようです! 結果を分割して複数のマッパーをトリガーする方法はありますか?
私は長い答えを出すことができますが、この質問は 3 年前のものです: このページをチェックしてください: http://discoproject.org/doc/disco/howto/dataflow.html#single-partition-map
つまり、マッパー関数に N 個の入力がある場合、出力は N になりmerge_partitions=False
、reduce を設定すると N 個のブロブが出力されます。入力よりも多くの出力を生成したい場合は、渡すことができますpartions=N
。しかし、disco ジョブがマッパー関数だけで構成されていて、分割された出力を生成したい場合は、上記のパラメーターと組み合わせた最も単純な reduce fase を追加して、分割された出力を取得します。
@静的メソッド def reduce(iter、out、params): for (key, value) in iter: out.add(キー、値)