ApacheBeamでデータウィンドウをマージする方法は何ですか?

Apache Beamにおいて、データウィンドウの結合操作はCombine演算子を使って実現できます。Combine演算子は複数のデータ要素を1つの単一の結果に結合し、結合方法を指定する結合関数を設定することができます。

例えば、整数のシーケンスを含むPCollectionがあり、それらの整数を合計することを望んでいるとします。この機能を実現するためには、Combine演算子を使用することができます。

PCollection<Integer> numbers = ...; // assume we have a PCollection of integers

PCollection<Integer> sum = numbers.apply(Combine.globally(new SumIntegersFn()));

public static class SumIntegersFn extends CombineFn<Integer, Integer, Integer> {
  @Override
  public Integer createAccumulator() {
    return 0;
  }

  @Override
  public Integer addInput(Integer accumulator, Integer input) {
    return accumulator + input;
  }

  @Override
  public Integer mergeAccumulators(Iterable<Integer> accumulators) {
    int sum = 0;
    for (int acc : accumulators) {
      sum += acc;
    }
    return sum;
  }

  @Override
  public Integer extractOutput(Integer accumulator) {
    return accumulator;
  }
}

上の例では、まずCombine操作子を定義し、整数を合計するCombineFnインターフェースを実装し、createAccumulator()、addInput()、mergeAccumulators()、extractOutput()メソッドをオーバーライドして結合操作を完了します。最後に、データセットにCombine操作子を適用し、結果を新しいPCollectionに保存します。

Apache Beamにおける合併操作は、全体的な操作であることに注意する必要があります。これは、すべてのデータウィンドウ内のデータを合併します。特定のデータウィンドウに対して合併操作を行う必要がある場合は、ウィンドウ演算子を使用してウィンドウタイプを指定し、合併関数でウィンドウ情報を処理します。

广告
広告は10秒後に閉じます。
bannerAds