Apache Flink中使用已上传Jar包提交任务报错排查求助
问题排查与解决:Flink Jar任务提交提示文件不存在
看起来你踩了个Flink REST API格式的小坑,咱们一步步理清楚问题所在:
核心问题:提交任务的URL格式错误
你使用的请求URL http://localhost:8081/jars/:949611ce-345a-4cd5-986b-8ff9b0700852_WordCount.jar/run 存在两处关键错误:
- 官方文档里的
:jarId是占位符标记,实际使用时需要把冒号:去掉,直接替换成Jar的真实唯一ID - 不需要带上Jar的文件名(
_WordCount.jar),Flink内部是通过唯一ID来定位已上传Jar文件的
从错误日志里的路径 /tmp/flink-web-8aa36f99-87fb-4fbc-b155-237fd833fc32/:949611ce-345a-4cd5-986b-8ff9b0700852_WordCount.jar 就能看出来:Flink把冒号当成了路径的一部分去查找文件,自然找不到对应的Jar包。
正确的操作流程
- 确认Jar的唯一ID:调用
GET http://localhost:8081/jars接口,返回的JSON数据里每个Jar都会有一个id字段,你这里的Jar ID就是949611ce-345a-4cd5-986b-8ff9b0700852(注意不要带后面的_WordCount.jar后缀)。 - 构造正确的Run请求URL:把ID替换进去并去掉冒号,正确的URL应该是:
http://localhost:8081/jars/949611ce-345a-4cd5-986b-8ff9b0700852/run - 提交请求(可选带参数):发送POST请求时,如果你需要指定并行度或者程序运行参数,可以在请求体中传入JSON格式的参数,示例如下:
{"parallelism": 2, "programArgs": "--input /path/to/input.txt --output /path/to/output.txt"}
快速验证方法
你可以先调用GET http://localhost:8081/jars/949611ce-345a-4cd5-986b-8ff9b0700852,如果能返回该Jar的详细信息(比如上传时间、存储路径等),说明Jar ID是正确的,再执行run请求就不会出现文件不存在的错误了。
内容的提问来源于stack exchange,提问作者Kulasangar
相关产品推荐
相关产品推荐

