继续浏览精彩内容
慕课网APP
程序员的梦工厂
打开
继续
感谢您的支持,我会继续努力的
赞赏金额会直接到老师账户
将二维码发送给自己后长按识别
微信支付
支付宝支付

来感受一把Flink批流一体化代码把!

徐老师
关注TA
已关注
手记 3
粉丝 249
获赞 8

Flink提出了批流一体化的概念,并且在1.12版本中开始正式引入批流一体化API,这个特性为批流一体化数仓的产生奠定了基础。

废话不多说,下面我们就来感受一把批流一体化代码把!

本文中的代码基于目前最新的Flink 1.15版本进行开发。

1:引入Flink相关的maven依赖。

<dependency>
    <groupId>org.apache.flink</groupId>
    <artifactId>flink-streaming-scala_2.12</artifactId>
    <version>1.15.0</version>
    <!-- <scope>provided</scope> -->
</dependency>
<dependency>
    <groupId>org.apache.flink</groupId>
    <artifactId>flink-clients</artifactId>
    <version>1.15.0</version>
    <!-- <scope>provided</scope> -->
</dependency>

2:核心代码如下。


import org.apache.flink.api.common.RuntimeExecutionMode
import org.apache.flink.streaming.api.scala.StreamExecutionEnvironment
import org.apache.flink.streaming.api.windowing.assigners.TumblingProcessingTimeWindows
import org.apache.flink.streaming.api.windowing.time.Time

/**
 * 基于最新Flink批流一体化的API开发
 * Created by xuwei
 */
object WordCountScala {
  def main(args: Array[String]): Unit = {
    //获取执行环境
    val env = StreamExecutionEnvironment.getExecutionEnvironment
    //指定处理模式,默认支持流处理模式,也支持批处理模式。
    /**
     * STREAMING:流处理模式,默认。
     * BATCH:批处理模式。
     * AUTOMATIC:让系统根据数据源是否有界来自动判断是使用STREAMING还是BATCH。
     *
     * 建议在客户端中使用flink run提交任务的时候通过-Dexecution.runtime-mode=BATCH指定
     */
    env.setRuntimeMode(RuntimeExecutionMode.AUTOMATIC)

    //指定DataSource
    val text = env.socketTextStream("bigdata04", 9001)//当处理模式指定为AUTOMATIC时,会按照流处理模式执行
    //val text = env.readTextFile("D:\\data\\hello.txt")//当处理模式指定为AUTOMATIC时,会按照批处理模式执行

    //指定具体的业务逻辑
    import org.apache.flink.api.scala._
    val wordCount = text.flatMap(_.split(" "))
      .map((_,1))
      .keyBy(_._1)
      //针对时间窗口,目前官方建议使用window,主要是为了让用户指定窗口触发是使用处理时间 or 事件时间
      .window(TumblingProcessingTimeWindows.of(Time.seconds(2)))
      .sum(1)

    //指定DataSink
    wordCount.print().setParallelism(1)

    //执行程序
    env.execute("WordCountScala")
  }
}

慕课网大数据体系课程中Flink版本已升级至Flink1.15版本,紧跟一线前沿技术。

图片描述

慕课网大数据工程师体系课直达链接:
https://class.imooc.com/sale/bigdata

打开App,阅读手记
1人推荐
发表评论
随时随地看视频慕课网APP