【问题标题】:How to submit a job, by using an uploaded jar in Apache Flink?如何通过在 Apache Flink 中使用上传的 jar 来提交作业?
【发布时间】:2018-01-17 14:15:03
【问题描述】:

我已经通过 curl 的 HTTP Post 请求将一个 jar(通过字数统计 java 程序生成)上传到 Apache Flink Web 控制台,get jars api 会显示上传的 jar。

当我尝试使用该 jar 提交作业时,它会抛出此错误:

引起:org.apache.flink.client.program.ProgramInvocationException: JAR 文件不存在 '/tmp/flink-web-8aa36f99-87fb-4fbc-b155-237fd833fc32/:949611ce-345a-4cd5-986b-8ff9b0700852_WordCount.jar'

这就是我的 POST 请求的样子:

http://localhost:8081/jars/:949611ce-345a-4cd5-986b-8ff9b0700852_WordCount.jar/run

我关注了他们的官方docs 供参考。我哪里错了?任何帮助都将不胜感激。

【问题讨论】:

    标签: mapreduce apache-flink flink-streaming


    【解决方案1】:

    确保 jar 文件位于您的临时目录中。路径中有':',对吗?

    我最近在学习 REST API,并通过 POST 请求成功提交了我的作业

    http://host:port/jars/29525e98-3ece-49c1-85d1-5301a5a38900_myjob.jar/run?allowNonRestoredState=false&entry-class=&parallelism=&program-args=&savepointPath=
    

    您还可以通过 Flink Dashboard 提交作业,并通过 Chrome DevToos 在网络选项卡(或类似的东西)检测正确的 url

    【讨论】:

    • 谢谢,我会试试这个并回复你。根据我上面在问题中提到的文档,说要在 jar id 之前添加一个:
    • 我尝试了您的上述请求参数,但仍然向我抛出错误。我继续检查 tmp/flink-web-8aa36f99-87fb-4fbc-b155-237fd833fc32/ 目录,jar 确实存在。
    • 您是否从路径中删除了 ':' 并且仍然出现错误?显然 /jars/:jarid/run 中的 ':jarid' 只是真实案例的模板。
    • 是的,我这样做了,一旦我这样做了,它就会引发另一个错误:Could not run the jarNeither a 'Main-Class', nor a 'program-class' entry was found in the jar file。但是后来我在创建 jar 时指定了主类,当我通过 cli 运行它时它可以完美运行。
    • 现在它找到了 jar 并且似乎是 jar 文件的问题。检查 jar 中的 META-INF/MANIFEST.MF 文件是否包含“Main-Class”(您可能应该在 maven-shade-plugin 中设置)。您的 jar 是否通过 Flink Dashboard 成功提交?如果是这样,只需查看通过浏览器 DevTools 发送的 http 请求
    猜你喜欢
    • 1970-01-01
    • 2020-02-10
    • 2019-07-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-11-22
    相关资源
    最近更新 更多