>我使用以下脚本提交 flink 应用程序,
flink run -m yarn-cluster -c com.my.flink.learningflink.FlinkToMySQL -yn 4 -ys 1 -j /tmp/learing.flink.1.7.1-0.1.jar
我的类 FlinkToMySQL 在 learing.flink.1.7.1-0.1.jar 中,但我的应用程序也需要依赖于 mysql jar,我如何指定 mysql jar 和其他依赖 jar。
另外,我使用以下脚本尝试了-yt
选项
flink run -m yarn-cluster -c com.my.flink.learningflink.FlinkToMySQL -yn 4 -ys 1 -yt /tmp/mysql-connector-java-5.1.45.jar -j /tmp/learing.flink.1.7.1-0.1.jar
,它仍然抱怨找不到合适的驱动程序(在我的本地 IDE 中运行良好(。
谢谢。
一般来说,Flink 支持多种方式来发布用户代码 jar:
- 构建包含所有用户代码依赖项的 uber-jar
- 将依赖项放入传送到群集的
FLINK_HOME/lib
使用 - Yarn 时,使用
-yt
指定应传送到集群并添加到系统类路径的其他文件
使用 maven 构建你的 jar 作为"带有依赖项的 jar",然后部署该 jar。
我的 maven 构建定义如下所示:
<build>
<plugins>
<plugin>
<artifactId>maven-assembly-plugin</artifactId>
<configuration>
<descriptorRefs>
<descriptorRef>jar-with-dependencies</descriptorRef>
</descriptorRefs>
<archive>
<manifest>
<mainClass></mainClass>
</manifest>
</archive>
</configuration>
<executions>
<execution>
<id>make-assembly</id>
<phase>package</phase>
<goals>
<goal>single</goal>
</goals>
</execution>
</executions>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.1</version>
<configuration>
<source>1.8</source>
<target>1.8</target>
</configuration>
</plugin>
</plugins>
</build>