pbootcms网站模板|日韩1区2区|织梦模板||网站源码|日韩1区2区|jquery建站特效-html5模板网

SpringBoot超詳細講解集成Flink的部署與打包方法

昨天折騰了下SpringBoot與Flink集成,實際上集成特簡單,主要是部署打包的問題折騰了不少時間。想打出的包直接可以java-jar運行,同時也可以flinkrun運行,或者在flink的dashboard上上傳點擊

一、SpringBoot集成Flink

其實沒什么特別的,就把Flink依賴的包在pom引入就行了。只是FlinkTask的寫法要小調整下,把相關依賴交給spring管理就行。

然后如果放棄Flink的Dashboard端監控task執行相關信息,那也可以在SpringBoot的啟動類里調用就行,但是可能出現task的相關對象沒有注入,這種都是小問題(實際就是springboot啟動完成再調用,或者通過自動任務調用。也可以在springBoot的入口類用@ComponentScan注解掃描flinkTask所在的目錄)。

實際更瀟灑一點的做法可以將flinkTask的信息存表,通過springBoot的接口調用restfullApi接口,接口里調用task,甚至可以做task的啟停、線程監控(接口里開線程調用task)。

二、FlinkTask寫法調整

@Component
@Slf4j
public class JianGongStopCarTask {
    public static void main(String[] args) throws Exception {
        StreamExecutionEnvironment env = StreamExecutionEnvironment.getExecutionEnvironment();
        DataStream<JGParkingLotInfo> dataStream = env.addSource(new JGParkingLotInfoSource());
//       獲取到數據之后轉換格式  此處不做轉換
        SingleOutputStreamOperator<JGParkingLotInfo> jgParkingLotInfoSingleOutputStreamOperator = dataStream.map(jgParkingLotInfo -> jgParkingLotInfo);
        jgParkingLotInfoSingleOutputStreamOperator.addSink(new SinkToMySQL());
        env.execute();
    }
}

PS:

實際就是@Component這個注解,然后這個示例里的JGParkingLotInfoSource、SinkToMySQL類都需要加這個注解。其他就沒有什么調整了,然后如果還有其他依賴沒有,使用hutool的SpringUtil進行get對象就行。

三、打包插件

<plugins>
      <!-- 編譯插件 -->
      <plugin>
        <artifactId>maven-compiler-plugin</artifactId>
        <configuration>
          <source>1.8</source>
          <target>1.8</target>
          <encoding>UTF-8</encoding>
        </configuration>
      </plugin>
      <!--  spring boot 項目打包
       <plugin>
         <groupId>org.springframework.boot</groupId>
         <artifactId>spring-boot-maven-plugin</artifactId>
       </plugin>-->
      <!-- Flink打包方式一 -->
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-assembly-plugin</artifactId>
        <version>3.3.0</version>
        <configuration>
          <archive>
            <manifest>
              <mainClass>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內容請搜索html5模板網以前的文章希望大家以后多多支持html5模板網!

【網站聲明】本站部分內容來源于互聯網,旨在幫助大家更快的解決問題,如果有圖片或者內容侵犯了您的權益,請聯系我們刪除處理,感謝您的支持!

相關文檔推薦

這篇文章主要介紹了SpringBoot整合MyBatis筆記記錄,大家需要注意在整合mybatis之前我們需要相對應的導入相關依賴,首先需要在java的目錄和resources下創建mapper文件夾,對SpringBoot整合MyBatis的
SpringBoot注冊服務到Nacos上,由Nacos來做服務的管理,本文主要介紹了springboot讀取nacos配置文件的實現,文中通過示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參
這篇文章主要介紹了Springboot自動裝配之注入DispatcherServlet,Springboot向外界提供web服務,底層依賴了springframework中的web模塊來實現,那么springboot在什么時機向容器注入DispatcherServlet這個核心
本文給大家介紹springboot中必須要了解的自動裝配原理,spring-boot-dependencies:核心依賴都在父工程中,這個里面主要是管理項目的資源過濾及插件,本文對springboot自動裝配原理給大家介紹
這篇文章主要介紹了SpringBoot項目引入第三方sdk?jar包,個人感覺比較好的解決方案是將jar上傳到本地的maven倉庫,然后通過pom依賴,引入第三方jar包,需要的朋友可以參考下
今天分享下SpringBoot多數據源集成,我怕麻煩,這里我覺得我的集成也應該是最簡單的,清晰明了
主站蜘蛛池模板: 扒渣机,铁水扒渣机,钢水扒渣机,铁水捞渣机,钢水捞渣机-烟台盛利达工程技术有限公司 | 头条搜索极速版下载安装免费新版,头条搜索极速版邀请码怎么填写? - 欧远全 | CPSE安博会| 激光内雕_led玻璃_发光玻璃_内雕玻璃_导光玻璃-石家庄明晨三维科技有限公司 激光内雕-内雕玻璃-发光玻璃 | 艾乐贝拉细胞研究中心 | 国家组织工程种子细胞库华南分库 | 承插管件_不锈钢承插管件_锻钢高压管件-温州科正阀门管件有限公司 | 双舌接地线-PC68数字式高阻计-ZC36|苏海百科 | sfp光模块,高速万兆光模块工厂-性价比更高的光纤模块制造商-武汉恒泰通 | 上海盐水喷雾试验机_两厢式冷热冲击试验箱-巨怡环试 | 智慧水务|智慧供排水利信息化|水厂软硬件系统-上海敢创 | 聚丙烯酰胺_阴离子_阳离子「用量少」巩义亿腾厂家直销,售后无忧 聚合甘油__盐城市飞龙油脂有限公司 | 南京办公用品网-办公文具用品批发-打印机耗材采购 | 高空重型升降平台_高空液压举升平台_高空作业平台_移动式升降机-河南华鹰机械设备有限公司 | 一级建造师培训_一建培训机构_中建云筑建造师培训网校 | 车充外壳,车载充电器外壳,车载点烟器外壳,点烟器连接头,旅行充充电器外壳,手机充电器外壳,深圳市华科达塑胶五金有限公司 | 防水套管厂家-柔性防水套管-不锈钢|刚性防水套管-天翔管道 | 低温柔性试验仪-土工布淤堵-沥青车辙试验仪-莱博特(天津)试验机有限公司 | 一体式钢筋扫描仪-楼板测厚仪-裂缝检测仪-泰仕特(北京) | 【中联邦】增稠剂_增稠粉_水性增稠剂_涂料增稠剂_工业增稠剂生产厂家 | 北京浩云律师事务所-法律顾问_企业法务_律师顾问_公司顾问 | 办公室家具公司_办公家具品牌厂家_森拉堡办公家具【官网】 | 外贮压-柜式-悬挂式-七氟丙烷-灭火器-灭火系统-药剂-价格-厂家-IG541-混合气体-贮压-非贮压-超细干粉-自动-灭火装置-气体灭火设备-探火管灭火厂家-东莞汇建消防科技有限公司 | 阳光模拟试验箱_高低温试验箱_高低温冲击试验箱_快速温变试验箱|东莞市赛思检测设备有限公司 | 网站优化公司_北京网站优化_抖音短视频代运营_抖音关键词seo优化排名-通则达网络 | 武汉印刷厂-不干胶标签印刷厂-武汉不干胶印刷-武汉标签印刷厂-武汉标签制作 - 善进特种标签印刷厂 | 示波器高压差分探头-国产电流探头厂家-南京桑润斯电子科技有限公司 | 包塑丝_高铁绑丝_地暖绑丝_涂塑丝_塑料皮铁丝_河北创筹金属丝网制品有限公司 | 房在线-免费房产管理系统软件-二手房中介房屋房源管理系统软件 | LINK FASHION 童装·青少年装展 河南卓美创业科技有限公司-河南卓美防雷公司-防雷接地-防雷工程-重庆避雷针-避雷器-防雷检测-避雷带-避雷针-避雷塔、机房防雷、古建筑防雷等-山西防雷公司 | 温室大棚建设|水肥一体化|物联网系统 | 西门子伺服电机维修,西门子电源模块维修,西门子驱动模块维修-上海渠利 | 中细软知识产权_专业知识产权解决方案提供商 | 手持式3d激光扫描仪-便携式三维立体扫描仪-北京福禄克斯 | 亿立分板机_曲线_锯片式_走刀_在线式全自动_铣刀_在线V槽分板机-杭州亿协智能装备有限公司 | 暴风影音| 诗词大全-古诗名句 - 古诗词赏析| nalgene洗瓶,nalgene量筒,nalgene窄口瓶,nalgene放水口大瓶,浙江省nalgene代理-杭州雷琪实验器材有限公司 | 气动绞车,山东气动绞车,气动绞车厂家-烟台博海石油机械有限公司 气动隔膜泵厂家-温州永嘉定远泵阀有限公司 | PU树脂_水性聚氨酯树脂_聚氨酯固化剂_聚氨酯树脂厂家_宝景化工 | sus630/303cu不锈钢棒,440C/430F/17-4ph不锈钢研磨棒-江苏德镍金属科技有限公司 | 多米诺-多米诺世界纪录团队-多米诺世界-多米诺团队培训-多米诺公关活动-多米诺创意广告-多米诺大型表演-多米诺专业赛事 |