Hi,

就像Zhenghua所说,各个tasks是去抢split的,而不是平均分配,所以一旦后面的tasks没有调度起来,前面的tasks会把split抢光的。

但是少slots多并发的场景并不少见,前面tasks读取太多数据可能会让性能/容错都不友好。所以我们也需要引入平均分配的策略。创建了个JIRA
[1], FYI.

[1]https://issues.apache.org/jira/browse/FLINK-16787

Best,
Jingsong Lee

On Wed, Mar 25, 2020 at 6:25 PM Chief <code...@foxmail.com> wrote:

> hi Zhenghua Gao
> 好的,谢谢,我拉日志看看。
>
>
> ------------------&nbsp;原始邮件&nbsp;------------------
> 发件人:&nbsp;"Zhenghua Gao"<doc...@gmail.com&gt;;
> 发送时间:&nbsp;2020年3月25日(星期三) 晚上6:09
> 收件人:&nbsp;"user-zh"<user-zh@flink.apache.org&gt;;
>
> 主题:&nbsp;Re: 关于flink sql 1.10 source并行度自动推断的疑问
>
>
>
> Hi Chief,
>
> 目前Hive connector读取数据是通过 InputFormatSourceFunction 来实现的。
> InputFormatSourceFunction 的工作模式不是预分配的模式,而是每个source task向master请求split。
> 如果某些source task提前调度起来且读完了所有的split,后调度起来的source task就没有数据可读了。
> 你可以看看JM/TM日志,确认下是不是前十个调度起来的source task读完了所有的数据。
>
> *Best Regards,*
> *Zhenghua Gao*
>
>
> On Wed, Mar 25, 2020 at 3:31 PM Chief <code...@foxmail.com&gt; wrote:
>
> &gt; hi&amp;nbsp;Jun Zhang
> &gt; 您说的我明白,就是不太理解,为什么根据文件数量自动推断任务并行后,不是每个并行任务读取一个文件?
> &gt;
> &gt;
> &gt;
> &gt;
> &gt;
> &gt; ------------------&amp;nbsp;原始邮件&amp;nbsp;------------------
> &gt; 发件人:&amp;nbsp;"Jun Zhang"<zhangjunemail...@gmail.com&amp;gt;;
> &gt; 发送时间:&amp;nbsp;2020年3月25日(星期三) 上午9:08
> &gt; 收件人:&amp;nbsp;"user-zh"<user-zh@flink.apache.org&amp;gt;;
> &gt;
> &gt; 主题:&amp;nbsp;Re: 关于flink sql 1.10 source并行度自动推断的疑问
> &gt;
> &gt;
> &gt;
> &gt; hi,Chief:
> &gt;
> &gt;
> &gt;
> 目前flink读取hive的时候,如果开启了自动推断,系统会根据所读取的文件数来推断并发,如果没有超过最大并发数(默认1000),source的并行度就等于你文件的个数,
> &gt; 你可以通过table.exec.hive.infer-source-parallelism.max来设置source的最大并发度。
> &gt;
> &gt; Kurt Young <ykt...@gmail.com&amp;gt; 于2020年3月25日周三 上午8:53写道:
> &gt;
> &gt; &amp;gt; 你的数据量有多大?有一个可能的原因是source的其他并发调度起来的时候,数据已经被先调度起来的并发读完了。
> &gt; &amp;gt;
> &gt; &amp;gt; Best,
> &gt; &amp;gt; Kurt
> &gt; &amp;gt;
> &gt; &amp;gt;
> &gt; &amp;gt; On Tue, Mar 24, 2020 at 10:39 PM Chief <code...@foxmail.com
> &amp;gt;
> &gt; wrote:
> &gt; &amp;gt;
> &gt; &amp;gt; &amp;gt; hi all:
> &gt; &amp;gt; &amp;gt; 之前用flink sql查询hive的数据,hive的数据文件是150个,sql
> &gt; &amp;gt; &amp;gt; client配置文件设置的并行度是10,source通过自动推断生成了150并发,但是通过看web
> &gt; &amp;gt; &amp;gt; ui发现只有前十个子任务是读到数据了,其他的任务显示没有读到数据,请问是我设置有问题吗?
> &gt; &amp;gt;



-- 
Best, Jingsong Lee

回复