为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

点击查看更多内容
1人点赞

若觉得本文不错,就分享一下吧!

评论

作者其他优质文章

正在加载中
感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦
今天注册有机会得

100积分直接送

付费专栏免费学

大额优惠券免费领

立即参与 放弃机会
意见反馈 帮助中心 APP下载
官方微信

举报

0/150
提交
取消