Thanks Piotr for the response. I have many data streams dependant on the
configuration by getting value from static variables in a class. The way
the configuration change works is to change the static variables' value in
the class. Since each task manager only has one JVM process, as long as the
message is broadcast to each task manager, the data streams will see the
change. The logic in data streams is quite simple, just get some parameters
from the static variable. So I think to add connect and flatmap to each of
them is too verbose. I am wondering is there any better way to express.

Piotr Nowojski <pi...@data-artisans.com> 于 2018年5月11日周五 下午7:31写道:

> Hi,
>
> I don’t quite understand your problem. If you broadcast message as an
> input to your operator that depends on this configuration, each instance of
> your operator will receive this configuration. It shouldn't matter whether
> Flink scheduled your operator on one, some or all of the TaskManagers. It
> only should matter if operators running your configuration sensitive code
> receive the broadcasted message.
>
>
> DataStream<> input = xxx;
> DataStream<> controlConfigInput = yyy;
>
> DataStream<> data = input.
> .do()
> .something()
> .fancy();
>
> controlConfigInput.broadcast()
> .connect(data)
> .flatMap(new MyFancyOperatorThatDependsOnConfigStream())
>
> Or slide 36 from here:
> https://www.slideshare.net/dataArtisans/apache-flink-datastream-api-basics
>
> Piotrek
>
> On 11 May 2018, at 11:11, Di Tang <tangdi.b...@gmail.com> wrote:
>
> Hi guys:
>
> I have a Flink job which contains multiple pipelines. Each pipeline
> depends on some configuration. I want to make the configuration dynamic and
> effective after change so I created a data source which periodically poll
> the database storing the configuration. However, how can I broadcast the
> events to all task manager instances?  The datastream.broadcast() only
> applies to the parallel instances of operator. And I don't want to connect
> the configuration data source to each pipeline because it is too verbose.
> If Flink cannot explicitly broadcast messages to task managers, is there
> any method to guarantee the parallel operator is distributed on all task
> managers?
>
> Thanks,
> Di
>
>
>

Reply via email to