本文适用于在 Serverless Flink SQL 任务中上传 Flink 1.11 自定义 Connector JAR,并处理以下问题的场景:
在 Flink SQL 任务中使用自定义 Connector 时,需要先将 Connector 项目编译为 JAR,然后上传至资源库并在任务中引用。
如果项目只在 properties 中声明 Flink 版本,而没有在 dependencies 中添加实际使用的 Flink 依赖,本地编译无法完成。JAR 上传并被任务引用后,也可能因为依赖缺失出现运行时缺类问题。
排查 Connector 运行行为时,需要查看 Connector 所在 TaskManager 的运行日志;如果未配置合适的日志级别,可能无法看到需要的日志内容。
properties 只用于定义版本变量,不会自动引入 Connector 项目实际使用的 Flink 依赖。taskmanager.log 中查看。在 pom.xml 的 dependencies 中,显式添加 Connector 实际使用的 Flink 依赖。不要只在 properties 中声明版本变量。
对于 Flink 1.11 运行环境已经提供的基础包,将依赖范围设置为 provided。Flink 依赖配置示例如下:
<dependency> <groupId>org.apache.flink</groupId> <artifactId>flink-table-runtime</artifactId> <version>${flink.version}</version> <scope>provided</scope> </dependency>
如果本地编译时依赖无法下载,请确认依赖版本是否正确,并确保依赖可以从当前开发环境访问;如果仍无法获取,请联系技术支持确认 Flink 1.11 依赖获取方式。
完成编译后,将生成的 Connector JAR 上传至资源库,并在 Serverless Flink SQL 任务的“引入资源”配置中选择该 JAR。
如果任务运行时出现缺类问题,请根据报错中的缺失类确认对应依赖,补充依赖后重新编译并上传 JAR。不要一次性将运行环境已经提供的全部 Flink 基础包打入 JAR。
env.log.level 设置任务的全局日志级别。taskmanager.log 中搜索 Connector 类名、Sink 名称、相关日志关键字等。