flink打包运行,spring boot flink
目录
一、跳羚集成弗林克二、弗林特斯克写法调整三、打包插件四、弗林克的上传与运行总结
一、SpringBoot集成Flink
其实没什么特别的,就把弗林克依赖的包在砰的一声引入就行了。只是弗林特斯克的写法要小调整下,把相关依赖交给弹簧管理就行。
然后如果放弃弗林克的仪表盘端监控工作执行相关信息,那也可以在跳羚的启动类里调用就行,但是可能出现工作的相关对象没有注入,这种都是小问题(实际就是跳羚启动完成再调用,或者通过自动任务调用。也可以在跳羚的入口类用@ComponentScan注解扫描弗林特斯克所在的目录)。
实际更潇洒一点的做法可以将弗林特斯克的信息存表,通过跳羚的接口调用restfullApi接口,接口里调用任务,甚至可以做工作的启停、线程监控(接口里开线程调用任务).
二、FlinkTask写法调整
@ Component @ SLF 4j公共类JianGongStopCarTask { public static void main(String[]args)抛出异常{ StreamExecutionEnvironment env=StreamExecutionEnvironment。getexecutionenvironment();数据流JGParkingLotInfo数据流=环境。添加源(new jgparkinglotifosource());//获取到数据之后转换格式此处不做转换singleoutputstreamoperator jgparkinglotiinfo jgparkinglotifosingleoutputstreamoperator=datastream。map(jgParkingLotInfo-jgParkingLotInfo);jgparkinglotinfosingleoutputstream operator。添加sink(new SinkToMySQL());环境。执行();}}PS:
实际就是@组件这个注解,然后这个示例里的JGParkingLotInfoSource、SinkToMySQL类都需要加这个注解。其他就没有什么调整了,然后如果还有其他依赖没有,使用胡图尔的斯普林古尔进行得到对象就行。
三、打包插件
插件!-编译插件-插件artifact id maven-编译器-插件/artifactId配置源1.8/源目标1.8/目标编码utf-8/编码/配置/插件!-弹簧靴项目打包插件groupIdorg.springframework.boot/groupId artifact id spring-boot-maven-plugin/artifact id/plugin-!-弗林克打包方式一-插件groupIdorg.apache.maven.plugins/groupId artifactIdmaven-assembly-plugin/artifactId版本3 .3 .0/版本配置存档清单麦
nClass>com.easylinkin.dc.olap.JianGongStopCarTask</mainClass> </manifest> </archive> <!-- 打包依赖 --> <descriptorRefs> <descriptorRef>jar-with-dependencies</descriptorRef> </descriptorRefs> </configuration> <executions> <execution> <id>make-assembly</id> <phase>package</phase> <goals> <goal>single</goal> </goals> </execution> </executions> </plugin> <!-- flink打包方式二 <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-shade-plugin</artifactId> <version>3.3.0</version> <executions> <execution> <phase>package</phase> <goals> <goal>shade</goal> </goals> <configuration> <createDependencyReducedPom>false</createDependencyReducedPom> <artifactSet> <excludes> <exclude>com.google.code.findbugs:jsr305</exclude> <exclude>org.slf4j:*</exclude> <exclude>log4j:*</exclude> </excludes> </artifactSet> <filters> <filter> <artifact>*:*</artifact> <excludes> <exclude>module-info.class</exclude> <exclude>META-INF/*.SF</exclude> <exclude>META-INF/*.DSA</exclude> <exclude>META-INF/*.RSA</exclude> </excludes> </filter> </filters> <transformers> <transformer implementation="org.apache.maven.plugins.shade.resource.AppendingTransformer"> <resource>META-INF/spring.handlers</resource> <resource>reference.conf</resource> </transformer> <transformer implementation="org.springframework.boot.maven.PropertiesMergingResourceTransformer"> <resource>META-INF/spring.factories</resource> </transformer> <transformer implementation="org.apache.maven.plugins.shade.resource.AppendingTransformer"> <resource>META-INF/spring.schemas</resource> </transformer> <transformer implementation="org.apache.maven.plugins.shade.resource.ServicesResourceTransformer"/> <transformer implementation="org.apache.maven.plugins.shade.resource.ManifestResourceTransformer"> <mainClass>com.easylinkin.dc.olap.JianGongStopCarTask</mainClass> </transformer> </transformers> </configuration> </execution> </executions> </plugin> --> <!-- flink打包方式三 <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-jar-plugin</artifactId> <configuration> <archive> <manifest> <mainClass>com.easylinkin.dc.olap.JianGongStopCarTask</mainClass> <useUniqueVersions>false</useUniqueVersions> <addClasspath>true</addClasspath> <classpathPrefix>./lib/</classpathPrefix> </manifest> </archive> <excludes> <exclude>module-info.class</exclude> <exclude>META-INF/*.SF</exclude> <exclude>META-INF/*.DSA</exclude> <exclude>META-INF/*.RSA</exclude> <exclude>com.google.code.findbugs:jsr305</exclude> <exclude>org.slf4j:*</exclude> <exclude>log4j:*</exclude> </excludes> </configuration> </plugin> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-dependency-plugin</artifactId> <version>3.3.0</version> <executions> <execution> <id>copy-dependencies</id> <phase>package</phase> <goals> <goal>copy-dependencies</goal> </goals> <configuration> <outputDirectory>${project.build.directory}/lib</outputDirectory> <excludeTransitive>false</excludeTransitive> <stripVersion>false</stripVersion> </configuration> </execution> </executions> </plugin>--> </plugins>除了打成SpringBoot用springboot的插件打包,flinkTask的打包有3种方式,方式三适合lib包提前传到task指定的依赖存储目录。这样上传flinkTask就很小。
方式二是官方推荐FlinkTask的打包方式,地址:https://nightlies.apache.org/flink/flink-docs-release-1.15/docs/dev/configuration/maven/
说一千道一万就是因为打包的META-INF下的MANIFEST.MF文件的内容有区别。springBoot项目的这个文件有自己的JarLauncher。
FlinkTask的jar这个文件内容
四、Flink的上传与运行
1、上传并命令运行
配置好flink环境,命令就是
flink run WordCount.jar
2、Flink管理大屏上传运行
点击Submit
总结
这样处理应该是最优雅的了,task的写法改动也小。
官方用的是方式二打包,实际我觉得要是依赖特多,用方式三打包,然后将依赖的jar传到flink运行环境flinkTask指定的目录下应该也不错(flinkTask的包就变小了)
flink的这个计算监控真香
所以基本还是就当springBoot集成flink的项目一样开发吧,在打包的时候注意切换插件就ok了。就分享到这里,up!
到此这篇关于SpringBoot超详细讲解集成Flink的部署与打包方法的文章就介绍到这了,更多相关SpringBoot Flink内容请搜索盛行IT以前的文章或继续浏览下面的相关文章希望大家以后多多支持盛行IT!
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。