我在Apache Flink中有一个程序。我测试并在本地机器上运行它,一切正常。要在远程群集上运行该程序,我按照Apache Flink Official Website中的说明进行了必要的更改。
我做了以下更改:
以下两点
ExecutionEnvironment env = ExecutionEnvironment.getExecutionEnvironment();
ExecutionEnvironment env = ExecutionEnvironment.createRemoteEnvironment("taskManagerName",
portNo,paralelismNo);
修复读取输入文件和写入输出的必要路径。
从程序中生成一个薄罐并放入必要的罐子
库除了我的项目jar文件之外的文件夹
myproj.jar
。
将数据和jar库以及myproj.jar复制到集群中 并在群集上远程运行以下命令:
java -cp pathToJarLib \\* -jar myproj.jar
但是,我得到以下错误,我没有任何线索来解决这个问题。没有相关的日志文件可以帮助我解决这个问题。
错误:
线程中的异常" main" java.lang.NoClassDefFoundError:org / apache / flink / api / common / functions / MapFunction at java.lang.Class.getDeclaredMethods0(Native Method) at java.lang.Class.privateGetDeclaredMethods(Class.java:2570) 在java.lang.Class.getMethod0(Class.java:2813) 在java.lang.Class.getMethod(Class.java:1663) 在sun.launcher.LauncherHelper.getMainMethod(LauncherHelper.java:494) 在sun.launcher.LauncherHelper.checkAndLoadMain(LauncherHelper.java:486) 引起:java.lang.ClassNotFoundException:org.apache.flink.api.common.functions.MapFunction 在java.net.URLClassLoader $ 1.run(URLClassLoader.java:366) 在java.net.URLClassLoader $ 1.run(URLClassLoader.java:355) at java.security.AccessController.doPrivileged(Native Method) 在java.net.URLClassLoader.findClass(URLClassLoader.java:354) at java.lang.ClassLoader.loadClass(ClassLoader.java:425) at sun.misc.Launcher $ AppClassLoader.loadClass(Launcher.java:308) at java.lang.ClassLoader.loadClass(ClassLoader.java:358) ......还有6个
答案 0 :(得分:3)
您的类路径显然不完整。尝试通过bin/flink run myproj.jar
提交。这样可以正确设置类路径。