Flink CDC里我flink1.17写doris的代码,在idea能正常跑,但是打包成jar包扔到flink的webui界面运行就一直报这个错怎么办?org.apache.flink.runtime.rest.handler.RestHandlerException: Could not execute application.
at org.apache.flink.runtime.webmonitor.handlers.JarRunHandler.lambda$handleRequest$1(JarRunHandler.java:114)
at java.util.concurrent.CompletableFuture.uniHandle(CompletableFuture.java:822)
at java.util.concurrent.CompletableFuture$UniHandle.tryFire(CompletableFuture.java:797)
at java.util.concurrent.CompletableFuture.postComplete(CompletableFuture.java:474)
at java.util.concurrent.CompletableFuture$AsyncSupply.run(CompletableFuture.java:1595)
at java.lang.Thread.run(Thread.java:748)
Caused by: java.util.concurrent.CompletionException: org.apache.flink.util.FlinkRuntimeException: Could not execute application.
at java.util.concurrent.CompletableFuture.encodeThrowable(CompletableFuture.java:273)
at java.util.concurrent.CompletableFuture.completeThrowable(CompletableFuture.java:280)
at java.util.concurrent.CompletableFuture$AsyncSupply.run(CompletableFuture.java:1592)
... 1 more
Caused by: org.apache.flink.util.FlinkRuntimeException: Could not execute application.
at org.apache.flink.client.deployment.application.DetachedApplicationRunner.tryExecuteJobs(DetachedApplicationRunner.java:88)
at org.apache.flink.client.deployment.application.DetachedApplicationRunner.run(DetachedApplicationRunner.java:70)
at org.apache.flink.runtime.webmonitor.handlers.JarRunHandler.lambda$handleRequest$0(JarRunHandler.java:108)
at java.util.concurrent.CompletableFuture$AsyncSupply.run(CompletableFuture.java:1590)
... 1 more
Caused by: org.apache.flink.client.program.ProgramInvocationException: The main method caused an error: Unable to instantiate java compiler
at org.apache.flink.client.program.PackagedProgram.callMainMethod(PackagedProgram.java:372)
at org.apache.flink.client.program.PackagedProgram.invokeInteractiveModeForExecution(PackagedProgram.java:222)
at org.apache.flink.client.ClientUtils.executeProgram(ClientUtils.java:105)
at org.apache.flink.client.deployment.application.DetachedApplicationRunner.tryExecuteJobs(DetachedApplicationRunner.java:84)
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。
根据您提供的错误信息和知识库中的相关资料,以下是针对问题的详细分析和解决方案:
从错误日志来看,主要问题集中在以下几个方面: 1. org.apache.flink.runtime.rest.handler.RestHandlerException
表明在通过Flink Web UI提交JAR包运行时,Flink无法正确执行应用程序。
java.util.concurrent.CompletionException
和 org.apache.flink.util.FlinkRuntimeException
这些异常进一步表明Flink在尝试加载或运行您的代码时遇到了问题。
ProgramInvocationException: The main method caused an error: Unable to instantiate java compiler
这是关键错误信息,表明Flink在运行时无法实例化Java编译器。这通常与以下原因有关:
provided
作用域)。根据知识库中的内容,为了避免JAR包依赖冲突,请确保以下几点: - Flink相关依赖的作用域设置为provided
在pom.xml
中,所有org.apache.flink
组下的依赖(如flink-java
、flink-streaming-java
等)应设置为provided
作用域。例如:
<dependency>
<groupId>org.apache.flink</groupId>
<artifactId>flink-java</artifactId>
<version>${flink.version}</version>
<scope>provided</scope>
</dependency>
注意:${flink.version}
必须与Flink Web UI中选择的引擎版本一致。例如,如果Web UI中选择了vvr-8.0.9-flink-1.17
,则${flink.version}
应为1.17.2
。
Apache Maven Shade Plugin
来实现Shade打包。例如:
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-shade-plugin</artifactId>
<version>3.2.4</version>
<executions>
<execution>
<phase>package</phase>
<goals>
<goal>shade</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>
根据知识库中的内容,本地开发依赖的Flink版本需与Flink Web UI中选择的引擎版本保持一致。请检查以下内容: - Flink版本一致性
确保本地开发环境中使用的Flink版本与Web UI中选择的版本完全一致。例如,如果Web UI中选择了vvr-8.0.9-flink-1.17
,则本地开发环境也应使用1.17.2
版本。
根据知识库中的内容,如果您的作业中使用了商业版连接器(如Doris连接器),可能会遇到类找不到的问题。解决方法如下: - 下载并添加Uber JAR包
从Maven中央仓库下载包含运行类的Uber JAR包,并将其添加到Flink运行环境中。例如,对于Doris连接器,可以从Maven仓库下载对应的uber.jar
文件。
pipeline.classpaths
pipeline.classpaths
配置,指定Uber JAR包的路径。例如:
Configuration conf = new Configuration();
conf.setString("pipeline.classpaths", "file:///path/to/doris-connector-uber.jar");
StreamExecutionEnvironment env = StreamExecutionEnvironment.getExecutionEnvironment(conf);
根据知识库中的内容,在Flink Web UI中部署JAR包时,请确保以下配置正确: - JAR URI
确保上传的JAR包路径正确,并且JAR包中包含了所有必要的依赖。
Entry Point Class
确保指定了正确的程序入口类。例如,如果您的主类为com.example.MyFlinkJob
,则需要在Web UI中填写该类的完整路径。
附加依赖文件
如果您的作业依赖其他JAR包(如Doris连接器),可以通过“附加依赖文件”选项上传这些JAR包,并在“运行参数配置”中添加pipeline.classpaths
配置。例如:
pipeline.classpaths: 'file:///flink/usrlib/doris-connector-uber.jar'
如果上述步骤仍无法解决问题,建议查看Flink TaskManager的日志文件,定位具体的错误原因。日志文件通常位于Flink集群的log
目录下。
通过以上步骤,您可以逐步排查并解决Flink CDC写入Doris时在Web UI运行报错的问题。重点在于: 1. 确保Maven依赖配置正确,避免依赖冲突。 2. 确保本地开发环境与Flink运行环境一致。 3. 正确配置Doris连接器的依赖和运行参数。 4. 检查JAR包上传和部署配置是否正确。
如果问题仍未解决,请提供更详细的日志信息以便进一步分析。
实时计算Flink版是阿里云提供的全托管Serverless Flink云服务,基于 Apache Flink 构建的企业级、高性能实时大数据处理系统。提供全托管版 Flink 集群和引擎,提高作业开发运维效率。