Apache flink 远程群集Apache Flink上的RegisterInputOutput()错误

Apache flink 远程群集Apache Flink上的RegisterInputOutput()错误,apache-flink,Apache Flink,在本地版本的ApacheFlink中执行以下代码不会生成任何错误,但在远程集群上会生成以下错误! 感谢您的帮助 personRecords = env.readCsvFile("dataPath/dataset.csv") .lineDelimiter("\n").fieldDelimiter(",") .includeFields("11").types(Integer.class, String.class);

在本地版本的ApacheFlink中执行以下代码不会生成任何错误,但在远程集群上会生成以下错误! 感谢您的帮助

 personRecords =  env.readCsvFile("dataPath/dataset.csv")
               .lineDelimiter("\n").fieldDelimiter(",")         
               .includeFields("11").types(Integer.class, String.class);

 partitionedData = personRecords.map(new cleanerMap());
错误如下所示:

java.lang.Exception: Call to registerInputOutput() of invokable failed
        at org.apache.flink.runtime.taskmanager.Task.run(Task.java:529)
        at java.lang.Thread.run(Thread.java:745)
Caused by: java.lang.RuntimeException: The initialization of the DataSource's outputs caused an error: Could not read the user code wrapper: org.apache.flink.quickstart.myProj$cleanerMap
        at org.apache.flink.runtime.operators.DataSourceTask.registerInputOutput(DataSourceTask.java:89)
        at org.apache.flink.runtime.taskmanager.Task.run(Task.java:526)
        ... 1 more
Caused by: org.apache.flink.runtime.operators.util.CorruptConfigurationException: Could not read the user code wrapper: org.apache.flink.quickstart.myProj$cleanerMap
        at org.apache.flink.runtime.operators.util.TaskConfig.getStubWrapper(TaskConfig.java:284)
        at org.apache.flink.runtime.operators.BatchTask.instantiateUserCode(BatchTask.java:1465)
        at org.apache.flink.runtime.operators.chaining.ChainedMapDriver.setup(ChainedMapDriver.java:39)
        at org.apache.flink.runtime.operators.chaining.ChainedDriver.setup(ChainedDriver.java:78)
        at org.apache.flink.runtime.operators.BatchTask.initOutputs(BatchTask.java:1336)
        at org.apache.flink.runtime.operators.DataSourceTask.initOutputs(DataSourceTask.java:284)
        at org.apache.flink.runtime.operators.DataSourceTask.registerInputOutput(DataSourceTask.java:86)

TaskConfig.getStubWrapper()
如果找不到用户代码类,则抛出
CorruptConfigurationException


我会检查
cleanerMap
类是否包含在程序jar文件中。

是的,有。在eclipse或本地安装的Flink中运行该程序时,该程序运行良好。在IDE之外运行该程序是可行的,因为该类已经在类路径中。启动本地Flink时,它也可能位于类路径中,具体取决于您的设置。即使类不在jar文件中,这两种情况都可以工作。只有一个jar文件,您的意思是即使在这种情况下我也应该指定路径吗?Flink程序必须打包在包含所有必需类(包括外部依赖项)的jar文件中。这样的程序可以提交到集群执行,例如使用CLI客户端(
/bin/flink
)。因此,
cleanerMap
类文件必须在jar文件中,并且必须提交jar文件以供执行。您指的是哪条路径?在我的程序中,所有类以及外部依赖项都包含在一个jar文件中。在本例中,要在远程集群上执行jar文件,在运行jar文件时,我必须在类路径中放置什么?例如,在命令Java-cp-jar myProj.jar我只是跳过了它