他这里列举的case是sink前发生了基于非pk的shuffle,比如说有join而且join条件不是主键,你的场景是怎样的呢?




另外,https://issues.apache.org/jira/browse/FLINK-20374 是sink到es,但es 
connector并不支持指定sink.parallelism,也就是说sink端的并行度必然为上游的并行度。而jdbc 
connector是可以指定sink.parallelism的,只要与上游的并行度不一致,runtime就会根据pk做hash 
shuffle,确保相同pk的记录发到同一个sink task。


在 2021-06-11 15:57:29,"casel.chen" <casel_c...@126.com> 写道:
>引用 Leonard Xu大佬之前的回答:
>
>> flink 1.13的jdbc connector新增 sink.parallism 
>> 参数,问题是如果增大并行度的话能否确保同一个主键记录发到同一个sink task呢?SQL正确的写法是什么?
>
>这个不仅在同步场景,在其他场景也需要注意 sink.parallism这个参数的使用,目前框架没有保证同一个pk的记录发送到同一个task,需要用户自己保证 
>sink 上定义的pk 和上游数据shuffle的key(比如 group key, join key)保持一致,
>否则可能导致数据乱序。 这个社区也在从 plan 推导上并解决,可以参考 
>https://issues.apache.org/jira/browse/FLINK-20374 
><https://issues.apache.org/jira/browse/FLINK-20374> 
>https://issues.apache.org/jira/browse/FLINK-22901 
><https://issues.apache.org/jira/browse/FLINK-22901> 
>
>说明加 sink.parallelism 是不行的
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>在 2021-06-11 15:44:51,"JasonLee" <17610775...@163.com> 写道:
>>hi
>>
>>sink 端可以通过 sink.parallelism 进行设置.
>>
>>
>>
>>-----
>>Best Wishes
>>JasonLee
>>--
>>Sent from: http://apache-flink.147419.n8.nabble.com/

回复