我正在通过这些方向将现有的风暴拓扑转换为flink作业。我通过git安装了flink 1.0 (SNAPSHOT),并在本地运行web服务器和流媒体服务器。
我通过gradle将拓扑构建到一个.jar文件中,并通过flink web界面提交它,得到这样的消息:"no entry class specified"。
所以-缺少切入点?.jar需要一些特殊的东西吗?一个清单吗?
当提交到风暴集群时,这个.jar正在工作。我已经添加了相关的flink .jar文件。
编辑:
通过命令行提交作业显示了以下消息:
org.apache.flink.client.program。ProgramInvocationException:在jar文件中既没有找到'Main-Class'也没有找到'program-class'条目。org.apache.flink.client.program.PackagedProgram.getEntryPointClassNameFromJar (PackagedProgram.java: 563)在org.apache.flink.client.program.PackagedProgram。(PackagedProgram.java: 186)在org.apache.flink.client.program.PackagedProgram。(PackagedProgram.java: 124)org.apache.flink.client.CliFrontend.buildProgram (CliFrontend.java: 725)org.apache.flink.client.CliFrontend.run (CliFrontend.java: 287)org.apache.flink.client.CliFrontend.parseParameters (CliFrontend.java: 971)org.apache.flink.client.CliFrontend.main (CliFrontend.java: 1021)
阅读这个JIRA建议一些答案:
- 添加清单
- 在命令行上添加入口点(使用'-c
'选项)
在Flink中,有两种方法可以指定包含
的入口点类。public static void main(String[] args)
方法。这也适用于在Flink中执行的Storm拓扑。
- 在
jar
中包含一个清单文件(相应的条目必须是Main-Class
或program-class
,即"program-class: package.and.EntryClass
") - 您可以指定
-c
标志(即bin/flink run -c package.and.EntryClass <jarFile.jar>
(见https://ci.apache.org/projects/flink/flink-docs-master/apis/cli.html))
如果你正在使用Flink的WebClient,你可以指定-c
标志在输入字段Flink选项(见这里:https://ci.apache.org/projects/flink/flink-docs-master/apis/web_client.html)