久久久久久久av_日韩在线中文_看一级毛片视频_日本精品二区_成人深夜福利视频_武道仙尊动漫在线观看

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

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

一、SpringBoot集成Flink

其實(shí)沒(méi)什么特別的,就把Flink依賴的包在pom引入就行了。只是FlinkTask的寫(xiě)法要小調(diào)整下,把相關(guān)依賴交給spring管理就行。

然后如果放棄Flink的Dashboard端監(jiān)控task執(zhí)行相關(guān)信息,那也可以在SpringBoot的啟動(dòng)類里調(diào)用就行,但是可能出現(xiàn)task的相關(guān)對(duì)象沒(méi)有注入,這種都是小問(wèn)題(實(shí)際就是springboot啟動(dòng)完成再調(diào)用,或者通過(guò)自動(dòng)任務(wù)調(diào)用。也可以在springBoot的入口類用@ComponentScan注解掃描flinkTask所在的目錄)。

實(shí)際更瀟灑一點(diǎn)的做法可以將flinkTask的信息存表,通過(guò)springBoot的接口調(diào)用restfullApi接口,接口里調(diào)用task,甚至可以做task的啟停、線程監(jiān)控(接口里開(kāi)線程調(diào)用task)。

二、FlinkTask寫(xiě)法調(diào)整

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

PS:

實(shí)際就是@Component這個(gè)注解,然后這個(gè)示例里的JGParkingLotInfoSource、SinkToMySQL類都需要加這個(gè)注解。其他就沒(méi)有什么調(diào)整了,然后如果還有其他依賴沒(méi)有,使用hutool的SpringUtil進(jìn)行g(shù)et對(duì)象就行。

三、打包插件

<plugins>
      <!-- 編譯插件 -->
      <plugin>
        <artifactId>maven-compiler-plugin</artifactId>
        <configuration>
          <source>1.8</source>
          <target>1.8</target>
          <encoding>UTF-8</encoding>
        </configuration>
      </plugin>
      <!--  spring boot 項(xiàng)目打包
       <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指定的依賴存儲(chǔ)目錄。這樣上傳flinkTask就很小。

方式二是官方推薦FlinkTask的打包方式,地址:https://nightlies.apache.org/flink/flink-docs-release-1.15/docs/dev/configuration/maven/

說(shuō)一千道一萬(wàn)就是因?yàn)榇虬腗ETA-INF下的MANIFEST.MF文件的內(nèi)容有區(qū)別。springBoot項(xiàng)目的這個(gè)文件有自己的JarLauncher。

FlinkTask的jar這個(gè)文件內(nèi)容

四、Flink的上傳與運(yùn)行

1、上傳并命令運(yùn)行

配置好flink環(huán)境,命令就是

flink run WordCount.jar

2、Flink管理大屏上傳運(yùn)行

點(diǎn)擊“Submit”

總結(jié)

這樣處理應(yīng)該是最優(yōu)雅的了,task的寫(xiě)法改動(dòng)也小。

官方用的是方式二打包,實(shí)際我覺(jué)得要是依賴特多,用方式三打包,然后將依賴的jar傳到flink運(yùn)行環(huán)境flinkTask指定的目錄下應(yīng)該也不錯(cuò)(flinkTask的包就變小了)

flink的這個(gè)計(jì)算監(jiān)控真香

所以基本還是就當(dāng)springBoot集成flink的項(xiàng)目一樣開(kāi)發(fā)吧,在打包的時(shí)候注意切換插件就ok了。就分享到這里,up!

到此這篇關(guān)于SpringBoot超詳細(xì)講解集成Flink的部署與打包方法的文章就介紹到這了,更多相關(guān)SpringBoot Flink內(nèi)容請(qǐng)搜索html5模板網(wǎng)以前的文章希望大家以后多多支持html5模板網(wǎng)!

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

相關(guān)文檔推薦

這篇文章主要介紹了SpringBoot整合MyBatis筆記記錄,大家需要注意在整合mybatis之前我們需要相對(duì)應(yīng)的導(dǎo)入相關(guān)依賴,首先需要在java的目錄和resources下創(chuàng)建mapper文件夾,對(duì)SpringBoot整合MyBatis的
SpringBoot注冊(cè)服務(wù)到Nacos上,由Nacos來(lái)做服務(wù)的管理,本文主要介紹了springboot讀取nacos配置文件的實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參
這篇文章主要介紹了Springboot自動(dòng)裝配之注入DispatcherServlet,Springboot向外界提供web服務(wù),底層依賴了springframework中的web模塊來(lái)實(shí)現(xiàn),那么springboot在什么時(shí)機(jī)向容器注入DispatcherServlet這個(gè)核心
本文給大家介紹springboot中必須要了解的自動(dòng)裝配原理,spring-boot-dependencies:核心依賴都在父工程中,這個(gè)里面主要是管理項(xiàng)目的資源過(guò)濾及插件,本文對(duì)springboot自動(dòng)裝配原理給大家介紹
這篇文章主要介紹了SpringBoot項(xiàng)目引入第三方sdk?jar包,個(gè)人感覺(jué)比較好的解決方案是將jar上傳到本地的maven倉(cāng)庫(kù),然后通過(guò)pom依賴,引入第三方j(luò)ar包,需要的朋友可以參考下
今天分享下SpringBoot多數(shù)據(jù)源集成,我怕麻煩,這里我覺(jué)得我的集成也應(yīng)該是最簡(jiǎn)單的,清晰明了
主站蜘蛛池模板: 亚洲精品一区中文字幕乱码 | 午夜网 | 免费精品视频一区 | 粉嫩粉嫩芽的虎白女18在线视频 | 日本视频免费观看 | 欧美成人一区二区 | 欧美在线亚洲 | 国产成人免费视频网站视频社区 | 精品久久99 | 神马九九 | 玩丰满女领导对白露脸hd | 91性高湖久久久久久久久_久久99 | 啪啪av | 亚洲巨乳自拍在线视频 | 日韩有码在线观看 | 黄色网页在线观看 | 亚洲综合区 | 亚洲精品1区 | 可以免费观看的av | 免费成人在线网站 | 国产精品一区二区三区四区五区 | 91国在线| 日韩在线不卡 | 天天干天天干 | 精品91| 亚洲精品成人 | 国产精品不卡一区二区三区 | 精品视频网| 日韩av一区二区在线观看 | av资源中文在线 | 亚洲欧美中文日韩在线v日本 | 国产一区91精品张津瑜 | 全免费a级毛片免费看视频免费下 | www.v888av.com| 久久99精品久久久久子伦 | 三级黄视频在线观看 | 久久手机视频 | 综合久久综合久久 | 精品中文字幕视频 | 美国a级毛片免费视频 | 黄色一级视频免费 |