背景
目前flink sql是不支持source/sink并行度配置的,flink sql中各算子并行度默认是根据source的partition数或文件数来决定的,比如常用的kafka source topic的partition是100,那么fink sql任务的并发就是100。但有时任务相对简单,比如datax任务,没有逻辑根本不需要很大的并发,100并发显然会造成资源的严重浪费。那么就有必要扩展connector使其支持并发度配置。
如何做
一、首先,需要在ddl的with参数中支持并发的配置,比如定义’parallelism‘ = ’10‘。
二、需要各connector支持这个参数的解析,这里分1.11版本之前还是之后。
1.11前
1.11版本,对Table接口进行了重构,在这之前实现一个connector需要做哪些,请见Flink实战之自定义flink sql connector。这里就以kafka为例来说明。
当ddl增加了parallelism配置之后,如何让connector识别呢?
- 需要在KafkaTableSourceSinkFactoryBase#supportedProperties增加一行properties.add(“parallelism”);
- parallelism的配置所在的properties会传递到KafkaTableSourceBase或KafkaTableSinkBase
- 这是就看你是需要扩展source还是sink或者两者都要了,source的话在KafkaTableSource