首先,如果在代码里setParallelism(n)指定的并发度大于在命令行里边指定的并发,那么会以代码中指定的并发为准。在你的场景下边,启动的时候指定1个slot,但是算子代码setParallelism(2),那么一共会启动2个slot,但是除了这个setParallelism(2)的算子外,其他的都是按照1的并发执行(命令行参数),只有这个算子的并发是2(代码参数)。
另外,任务整理的资源占用情况是以最大并发占用的资源为准的,例如你这个例子,任务整体需要2个slot,上下游算子可以服用同一个slot
我用的是flink-1.7
--
[hidden email]
在 2019-08-29 14:02:20,"ddwcg" <
[hidden email]> 写道:
>谢谢您的回复,那如果启动的时候只给了一个solt,算子并行度设置为2,最终也是按并行度为1去执行呢
>
>> 在 2019年8月29日,10:54,
[hidden email] 写道:
>>
>> 你好,以我的理解,并行度的优先级setParallelism>命令>配置文件。
>> 每个算子有多个并行度的话,每个并行度占一个slot。
>> flink sql无法设置并行度。
>>
>>
>>
>>
[hidden email]
>>
>> 发件人: ddwcg
>> 发送时间: 2019-08-29 10:18
>> 收件人: user-zh
>> 主题: 全局并行度和算子并行度的关系
>> hi,
>> 请问在作业启动时设置的并行度,和后面算子的并行度是什么关系?
>> 比如启动时设置为1,map算子设置为5,map(...).setParallelism(5),这个算子并行度的设置会起作用吗(因为它大于全局设置的1)?
>> 启动时设置的并行数是slot的个数,每个slot的资源是固定的(比如是1G内存),那么后面的算子增加了并行度,资源怎么划分?
>>
>> 另外flink sql的并行度是怎么设置的,我没有发现有setParallelism,只有一个最大并行度的设置:setMaxParallelism()
>>
>>
>>
>> 谢谢
>>
>>
>>
>>
>>
>