2016-10-18 4 views
2

FlinkにはカスタムパーティショニングAPIが付属しています。しかし、DataStreampartitionCustomを呼び出した後にDataStreamが返され、KeyedStreamではないという問題があります。FlinkのカスタムパーティショニングからKeyedStreamを取得する

一方、KeyedStreamのパーティション戦略を上書きすることはできません。

DataStreamためのAPIがreducesum演算子を持っているため、自動的に仕切られた内部状態にしないので、私は、KeyedStreamを使用したいです。ワードカウントがある場合

私が意味する、:

words.map(s -> Tuple2.of(s, 1)).keyBy(0).sum(1) 

私は書くことがしたい:

words.map(s -> Tuple2.of(s, 1)).partitionCustom(myPartitioner, 0).sum(1) 

は、これを実現する方法はありますか?

ありがとうございました!

答えて

0

Flinkのドキュメント(バージョン1.2.1以降)では、物理的にキーを基準にしてデータをパーティション化し、物理的にはパーティション内に物理的に格納された場所を指定します。データをキーストリームに変換します。要約を行うには、 "keyBy"演算子を使用してキーでグループ化する必要があります。次に、 "sum"演算を実行できます。 詳しくは、https://ci.apache.org/projects/flink/flink-docs-release-1.2/dev/datastream_api.html#physical-partitioningをご参照ください。

関連する問題