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