流批一体
flink 1.12发布后,在api上真正做到了流批一体。在替换kafka consumer到kafka source,碰到很多坑,好不容易解决了,记录下。
不是最佳的方案,等着1.13发布修正。
坑1:使用官方镜像
1.12.1自己构建镜像会出现权限问题,可能是docker版本的问题,使用官方镜像后可以解决。
坑2:使用kafka source后kafka internal auth需要是plaintext
我们的集群使用的是SASL_PLAINTEXT的auth,在配置sasl后,程序无法运行,在深入代码之后,发现Enumerator内的consumer和admin
client没有配置sasl,导致无法客户端无法连接至server。
只能使用plaintext auth的kafka集群,也就是没有auth,代码如下。
1 | KafkaSource |
坑3:javax.management.InstanceAlreadyExistsException
无视,这个是kafka的老bug,因为相同的client id注册两次到JMX,可以把这个exception屏蔽掉。
坑4:topic和partition都不能为空
否则会出现各种错误,比如checkpoint失败,无法提交offset,无法消费等。
坑5:并行度与分区数要相同
不相同的话,任务无法结束。