11-slot共享组 slotSharingGroup("共享组

2021-08-06  本文已影响0人  yayooo

一、问题引入


图-1 图-2

二、slot共享组介绍

        DataStreamSource<String> dataStreamSource = env.addSource(new TubeSource());
        SingleOutputStreamOperator<Object> resultStream = dataStreamSource.flatMap().slotSharingGroup("共享组Flatmap")
                .keyBy(0).sum(1).setParallelism(2).slotSharingGroup("共享组sum");
        resultStream.print().setParallelism(1);

源码:

    @PublicEvolving
    public SingleOutputStreamOperator<T> slotSharingGroup(String slotSharingGroup) {
        transformation.setSlotSharingGroup(slotSharingGroup);
        return this;
    }

作用:共享组内的任务共享slot,不同组的任务必须占用不同的slot。
没有设置的时候默认是default共享组,所有任务共享

上述代码中,addSource占用一个slot,flatMap占用一个slot,sum和print共享slot(共享组sum)各占用一个slot,则需要提供4个slot用于计算。

所以现在算并行度方式为:先分slot共享组,3个slot共享组,sum操作和print操作可共享slot,所以sum操作需要的两个slot有一个可以用print操作分配的slot来共享。

上一篇 下一篇

猜你喜欢

热点阅读