Apache flink Apache Flink:在预定义上下文中运行时,无法实例化RemoteEnvironment

Apache flink Apache Flink:在预定义上下文中运行时,无法实例化RemoteEnvironment,apache-flink,Apache Flink,是否有人知道,在远程Flink群集上运行程序时,以下错误的根源是什么 我如何解决它 org.apache.flink.client.program.ProgramInvocationException: The main method caused an error. at org.apache.flink.client.program.PackagedProgram.callMainMethod(PackagedProgram.java:512) at org.apache.

是否有人知道,在远程Flink群集上运行程序时,以下错误的根源是什么

我如何解决它

 org.apache.flink.client.program.ProgramInvocationException: The main method caused an error.
    at org.apache.flink.client.program.PackagedProgram.callMainMethod(PackagedProgram.java:512)
    at org.apache.flink.client.program.PackagedProgram.invokeInteractiveModeForExecution(PackagedProgram.java:395)
    at org.apache.flink.client.program.Client.runBlocking(Client.java:252)
    at org.apache.flink.client.CliFrontend.executeProgramBlocking(CliFrontend.java:675)
    at org.apache.flink.client.CliFrontend.run(CliFrontend.java:326)
    at org.apache.flink.client.CliFrontend.parseParameters(CliFrontend.java:977)
    at org.apache.flink.client.CliFrontend.main(CliFrontend.java:1027)
Caused by: org.apache.flink.api.common.InvalidProgramException: The RemoteEnvironment cannot be instantiated when running in a pre-defined context (such as Command Line Client, Scala Shell, or TestEnvironment)
    at org.apache.flink.api.java.RemoteEnvironment.<init>(RemoteEnvironment.java:118)
    at org.apache.flink.api.java.RemoteEnvironment.<init>(RemoteEnvironment.java:78)
    at org.apache.flink.api.java.ExecutionEnvironment.createRemoteEnvironment(ExecutionEnvironment.java:1155)
    at org.apache.flink.test.myProj.main(myProj.java:133)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:606)
    at org.apache.flink.client.program.PackagedProgram.callMainMethod(PackagedProgram.java:497)
    ... 6 more
org.apache.flink.client.program.ProgramInvocationException:主方法导致错误。
位于org.apache.flink.client.program.PackagedProgram.callmain方法(PackagedProgram.java:512)
位于org.apache.flink.client.program.PackagedProgram.invokeInteractiveModeForExecution(PackagedProgram.java:395)
位于org.apache.flink.client.program.client.runBlocking(client.java:252)
位于org.apache.flink.client.CliFrontend.executeProgramBlocking(CliFrontend.java:675)
位于org.apache.flink.client.CliFrontend.run(CliFrontend.java:326)
位于org.apache.flink.client.CliFrontend.parseParameters(CliFrontend.java:977)
位于org.apache.flink.client.CliFrontend.main(CliFrontend.java:1027)
原因:org.apache.flink.api.common.invalidProgrameException:在预定义上下文(如命令行客户端、Scala Shell或测试环境)中运行时,无法实例化RemoteEnvironment
位于org.apache.flink.api.java.RemoteEnvironment(RemoteEnvironment.java:118)
位于org.apache.flink.api.java.RemoteEnvironment(RemoteEnvironment.java:78)
位于org.apache.flink.api.java.ExecutionEnvironment.createRemoteEnvironment(ExecutionEnvironment.java:1155)
位于org.apache.flink.test.myProj.main(myProj.java:133)
在sun.reflect.NativeMethodAccessorImpl.invoke0(本机方法)处
在sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)中
在sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)中
位于java.lang.reflect.Method.invoke(Method.java:606)
位于org.apache.flink.client.program.PackagedProgram.callmain方法(PackagedProgram.java:497)
... 还有6个

在Flink程序中,您需要使用

ExecutionEnvironment env = ExecutionEnvironment.getExecutionEnvironment();
检索
ExecutionEnvironment
。这会自动获取本地环境(从IDE执行时)或集群环境(使用命令行客户端时)


如果要将Flink程序提交到远程群集,您只能使用
远程环境。

在Flink程序中,您需要使用

ExecutionEnvironment env = ExecutionEnvironment.getExecutionEnvironment();
检索
ExecutionEnvironment
。这会自动获取本地环境(从IDE执行时)或集群环境(使用命令行客户端时)


如果要将Flink程序提交到远程群集,则只能使用
RemoteEnvironment

要将作业提交到远程环境(代码使用.createRemoteEnvironment),只能通过API调用,而不是通过CLI将作业提交到远程环境(您的代码使用.createRemoteEnvironment)您只能通过API调用而不是从CLI执行此操作

我刚刚使用了以下命令并将程序提交到远程群集。ExecutionEnvironment env=ExecutionEnvironment.createRemoteEnvironment(“Jobemanger”,端口,并行性);不管怎样,我做了您已经说过的,但是仍然存在相同的错误。请将其更改为ExecutionEnvironment env=ExecutionEnvironment.getExecutionEnvironment()然后它将正确执行。我刚刚使用了以下命令并将程序提交到远程集群。ExecutionEnvironment env=ExecutionEnvironment.createRemoteEnvironment(“Jobemanger”,port,parallelism);无论如何,我做了您已经说过的,但是仍然存在相同的错误。请将其更改为ExecutionEnvironment env=ExecutionEnvironment.getExecutionEnvironment(),然后重新生成您的程序。然后它将正确执行。