解决flink 1.7 Exception in thread “main” org.apache.flink.table.api.ValidationException: Unable to create a sink for writing table
问题分析
- 报错提示的主要内容
ValidationException: Unable to create a sink for writing table ...
Could not load service provider for factories
和org.apache.flink.table.planner.delegation.DefaultExecutorFactory not a subtype
。- 这些问题通常是因为 Flink 运行环境或依赖配置不正确。
- 可能原因
- Flink 和 Doris 依赖版本不匹配:
- 使用的 Flink Doris Connector 是
flink-doris-connector-1.17
,其版本号为24.0.1
,需要确保它与当前 Flink 的版本(1.17.x
)兼容。或者flink的jar包有的不是1.17.x版本,和上面的 link-doris-connector-1.17 不兼容。
- 使用的 Flink Doris Connector 是
- Flink 和 Doris 依赖版本不匹配:
解决方案
1. 检查 Flink 和 Doris Connector 的兼容性
- 确认 Flink 和 Doris Connector 的版本兼容。
- 当前使用的是
flink-doris-connector-1.17
,对应 Flink 1.17.x。如果使用的是其他版本的 Flink(如 1.16 或 1.18),需要更换依赖:
<dependency>
<groupId>org.apache.doris</groupId>
<artifactId>flink-doris-connector-1.17</artifactId>
<version>24.0.1</version>
</dependency>
2. 添加 Flink Doris Connector 所需的运行时依赖
确保项目中包含以下依赖(建议手动检查 pom.xml
是否缺失),检查flink的jar是否都是1.17.x版本:
<dependency>
<groupId>org.apache.doris</groupId>
<artifactId>flink-doris-connector-1.17</artifactId>
<version>24.0.1</version>
</dependency>
<dependency>
<groupId>org.apache.flink</groupId>
<artifactId>flink-table-planner_2.12</artifactId>
<version>1.17.0</version>
<scope>provided</scope>
</dependency>
确保 flink-table-planner_2.12
版本与 Flink 版本匹配。