Hi, I’m not if I understand your question/concerns.
As Rong Rong explained, key selector is used to assign records to window operators. Within key context, you do not have access to other keys/values in your operator/functions, so your reduce/process/… functions when processing key:1 won’t be able to access/see keys 2, 3, 4, 6 or 10, even if they are on the same machine. If you want to process records together, they must be keyed by together appropriately. Piotrek > On 4 Mar 2019, at 04:45, 刘 文 <thinktothi...@yahoo.com> wrote: > > > Sorry, I still don't understand. Can I ask for help again? > > > For example, the degree of parallelism is 2, which will produce two Window > threads. > ).setParallelism(2) > ).These two windows are how to read their own partition data. > ).input data > 1 2 3 4 5 6 7 8 9 10 > ).source -> operator -> RecordWriter.emit cal partition by key, > ------------------ > change [partition 0] > > > key:1 partition:0 > key:2 partition:0 > key:3 partition:0 > key:4 partition:0 > key:6 partition:0 > key:10 partition:0 > ------------------ > change 1 [partition 1] > > key:5 partition:1 > key:7 partition:1 > key:8 partition:1 > key:9 partition:1 > ).window 0 (1/2) > How to Calculation current parition ? > How to get the data in the current partition ? > > ).window 1 (2/2) > How to Calculation current parition ? > How to get the data in the current partition ? > > --------------------------------------------------- > >> 在 2019年3月4日,上午4:19,Rong Rong <walter...@gmail.com >> <mailto:walter...@gmail.com>> 写道: >> >> Hi >> >> I am not sure if I understand your question correctly, so will try to >> explain the flow how elements gets into window operators. >> >> Flink makes the partition assignment before invoking the operator to process >> element. For the word count example, WindowOperator is invoked by >> StreamInputProcessor[1] to "setKeyContextElement". >> The actual key is then set by WindowOperator (inherently by >> AbstractStreamOperator[2]), which ultimately passed to KeyedStateBackend[3]. >> >> So, by the time WindowOperator processes elements, the KeyedStateBackend was >> already set to the correct key. >> >> Hope this answers your question. >> >> -- >> Rong >> >> >> [1] >> https://ci.apache.org/projects/flink/flink-docs-release-1.7/api/java/org/apache/flink/streaming/runtime/io/StreamInputProcessor.html >> >> <https://ci.apache.org/projects/flink/flink-docs-release-1.7/api/java/org/apache/flink/streaming/runtime/io/StreamInputProcessor.html> >> [2] >> https://ci.apache.org/projects/flink/flink-docs-release-1.7/api/java/org/apache/flink/streaming/api/operators/AbstractStreamOperator.html >> >> <https://ci.apache.org/projects/flink/flink-docs-release-1.7/api/java/org/apache/flink/streaming/api/operators/AbstractStreamOperator.html> >> On Sun, Mar 3, 2019 at 5:15 AM 刘 文 <thinktothi...@yahoo.com >> <mailto:thinktothi...@yahoo.com>> wrote: >> ). Environment Flink1.7.2 WordCount local, stream processing >> ).source RecordWriter.emit(), for each element by key, divided into >> different partitions, the partition location of each element has been >> determined, the number of partitions is determined by >> DataStream.setParallelism(2) >> ). By copyFromSerializerToTargetChannel(int targetChannel) to write data to >> different channels, it is to send data to the window corresponding to >> different partitions (data is sent one by one) >