新的一年,新的开始,新的习惯,现在开始。

 1.简介

  Flink是德国一家公司名为dataArtisans的产品,2016年正式被apache提升为顶级项目(地位同spark、storm等开源架构)。并且在2016年里,共发布了包括1.0.0版本在内的10个版本,发展速度可想而知。这次学习的是Flink的核心Feature,windows。

  //dataArtisans官网:

  http://data-artisans.com/

  //apache Flink官网:

  http://flink.apache.org/

  2.windows

  2.1 what Flink windows

  人们处理数据通常把流式的数据转换成批再对其进行处理比如一些累计统计。面对源源不断的流,这种处理方式衍生出了一种新的名词-windows。下图就是一个典型的windows操作。

  

  2.2 why Flink windows

  Flink提供了一套简单易用并且灵活可扩展的windows接口,从窗口类型可分为滑动窗口,固定窗口,会话窗口,从窗口性质可分为事件窗口,时间窗口。

  2.3 how Flink windows

  Flink的window分成三部分,按运行顺序依次为 WindowAssigner,Trigger,Evictor。下图为官网提供的解释

  

  数据进来首先被windowAssigner分到不同的window,一个数据可以同时存在于多个window。每个window都有一个Trigger,用来判断数据是应该purge还是evaluate。当数据被evaluate,会进入到Evictor(本人感觉类似于过滤器)。使用者可以在evaluate的时候自定义处理逻辑,类似于sum(),min(),max()之类的ReduceFunction, FoldFunction, or WindowFunction。

  下面是代码实战

  申明:所有运行环境基于Flink官方提供的Flink Quickstart Job 1.1.3。

  

val env = StreamExecutionEnvironment.getExecutionEnvironment

    // create streams for names and ages by mapping the inputs to the corresponding objects
val text = env.socketTextStream("127.0.0.1", 12580) val counts = text.map {str=>
val arr = str.split(",")
(arr(0),arr(1).toInt)
}
.keyBy(0)
.countWindow(3)
.sum(1) counts.print() env.execute("Scala WordCount from SocketTextStream Example")

  测试数据源为socket,默认以\n作为stream的分隔符,服务端发送的数据依次为:

  a,1

  a,2

  b,1

  b,1

  a,3

  b,1

  最终程序结果如下:

  (a,6)

  (b,3)

  这个案例基于Flink提供的原生事件countWindows,其中已经包括了windowAssigner,Trigger,Evictor

  备注:

  必须导入指定包,否则会找不到类

  报错:Error:(18, 27) could not find implicit value for evidence parameter of type org.apache.flink.api.common.typeinfo.TypeInformation[(String, Int)]
  val counts = text.map {str=>

  加入:import org.apache.flink.streaming.api.scala._

  

  参考资料:

  //apache官网介绍的quickstart

  https://ci.apache.org/projects/flink/flink-docs-release-1.1/quickstart/scala_api_quickstart.html

  //apache官网介绍的Flink windows

  http://flink.apache.org/news/2015/12/04/Introducing-windows.html

  

PS

下方是我个人订阅号,会一直更新各类技术文章,欢迎关注  :)

基于Flink的windows--简介的更多相关文章

  1. 【新鲜出炉的个人项目】基于 Flink 的商品推荐系统

    FlinkCommodityRecommendationSystem Recs FlinkCommodityRecommendationSystem(基于 Flink 的商品推荐系统) 1. 前言 系 ...

  2. [转帖]Flink(一)Flink的入门简介

    Flink(一)Flink的入门简介 https://www.cnblogs.com/frankdeng/p/9400622.html 一. Flink的引入 这几年大数据的飞速发展,出现了很多热门的 ...

  3. Lyft 基于 Flink 的大规模准实时数据分析平台(附FFA大会视频)

    摘要:如何基于 Flink 搭建大规模准实时数据分析平台?在 Flink Forward Asia 2019 上,来自 Lyft 公司实时数据平台的徐赢博士和计算数据平台的高立博士分享了 Lyft 基 ...

  4. Plink v0.1.0 发布——基于Flink的流处理平台

    Plink是一个基于Flink的流处理平台,旨在基于 [Apache Flink]封装构建上层平台. 提供常见的作业管理功能.如作业的创建,删除,编辑,更新,保存,启动,停止,重启,管理,多作业模板配 ...

  5. 字节跳动流式数据集成基于Flink Checkpoint两阶段提交的实践和优化

    背景 字节跳动开发套件数据集成团队(DTS ,Data Transmission Service)在字节跳动内基于 Flink 实现了流批一体的数据集成服务.其中一个典型场景是 Kafka/ByteM ...

  6. 基于EasyUI实现windows桌面

    之前为大家介绍了 基于jquery tool实现的windows桌面效果,今天给大家带来一款基于EasyUI实现windows桌面.这款桌面适用浏览器:360.FireFox.Chrome.Safar ...

  7. 基于Flink秒级计算时CPU监控图表数据中断问题

     基于Flink进行秒级计算时,发现监控图表中CPU有数据中断现象,通过一段时间的跟踪定位,该问题目前已得到有效解决,以下是解决思路:   一.问题现象       以SQL02为例,发现本来10秒一 ...

  8. C#/.NET基于Topshelf创建Windows服务程序及服务的安装和卸载(极速,简洁)

    本文首发于:码友网--一个专注.NET/.NET Core开发的编程爱好者社区. 文章目录 C#/.NET基于Topshelf创建Windows服务的系列文章目录: C#/.NET基于Topshelf ...

  9. 用Visual C#开发基于OpenCV的Windows应用程序

    http://blog.163.com/wangxh_jy/blog/static/28233883201001581640283/ 关于详细的配置及程序运行截图,请下载:http://downloa ...

随机推荐

  1. GitHub客户端Desktop的安装和使用总结

    前言 这段时间想把我写的东西上传到GitHub上,所以开始收集资料学习,走了很多弯路( msysgit和极慢的FQ网速让我欲仙欲死),最后找到了比较好用的工具GitHub Desktop.在此做出自己 ...

  2. 关于adb重启的一些问题

    有时候我们在使用eclipse启动虚拟机进行程序测试的时候会提示,要我们重启adb和eclipse,这个时候,重启adb的方式就是,使用cmd定位到adb所在的文件夹,然后输入指令:adb kill- ...

  3. MyBatis 源码分析——类型处理器

    官网上面讲到:无论是 MyBatis 在预处理语句(PreparedStatement)中设置一个参数时,还是从结果集中取出一个值时, 都会用类型处理器将获取的值以合适的方式转换成 Java 类型.那 ...

  4. solr6.4.1搜索引擎同步mysql数据库

    尚未成功启动solr的,请参考我的另一篇文章:http://www.cnblogs.com/zhuwenjoyce/p/6506359.html(solr6.4.1 搜索引擎启动eclipse启动) ...

  5. C#中运算符的应用

    c#中的运算符(只说我自己熟悉和常用的)一.算数运算:加 +减 -乘 *除 / (整型的除法是不算小数点的,也就是说结果是整数,余数舍去了,求余数看下面)求余数 % 加减乘好理解,整型的除法和求余数因 ...

  6. 1230: [Usaco2008 Nov]lites 开关灯

    1230: [Usaco2008 Nov]lites 开关灯 Time Limit: 10 Sec  Memory Limit: 162 MBSubmit: 1162  Solved: 589[Sub ...

  7. log4go 的 Bug Fix 及 增强

    log4go 一直存在关闭时丢失记录的问题.网络上很多人怀疑是Flush.经过跟踪发现只要在 Close() 函数中增加以下语句: for i := 10; i > 0 && l ...

  8. javascript写贪吃蛇游戏(20行代码!)

    <!doctype html> <html> <body> <canvas id="can" width="400" ...

  9. MySQL查看修改存储引擎总结

    文总结了MySQL下查看.修改存储引擎的一些方法.测试.验证环境为MySQL 5.6 1:查看MySQL的存储引擎信息 1.1 使用show engines命令. .csharpcode, .csha ...

  10. android 透明状态栏方法及其适配键盘上推(一)

    android的状态栏(statusBar)版本的差异化比较大.在android 4.4 以上和5.x可以设置状态栏背景颜色,但是不可以设置状态栏中字和图标的颜色.而系统默认的statusbar的字体 ...