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

 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()之类的ReduceFunctionFoldFunction, 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. 前端数据统计用做Bootstrap的一些柱状图、饼状图和折线图案例

    Bootstrap,来自 Twitter,是目前最受欢迎的前端框架.Bootstrap 是基于 HTML.CSS.JAVASCRIPT 的,它简洁灵活,使得 Web 开发更加快捷. Bootstrap ...

  2. Chosen通用初始化

    一直在用Chosen这个js插件,其目的就是美化下拉框.github地址:https://harvesthq.github.io/chosen/ no_results_text:"xxxxx ...

  3. Python3.5 numpy,scipy,安装

    不是特别难,先保证环境变量正确配置 首先,安装了VS2015; 第二,在Python3.5安装路径中有一个Scripts文件夹,里面有pip.exe或者类似的可执行文件,安装一下: 第三,下载相对应的 ...

  4. 《学习记录》ng2-bootstrap中的component使用教程

    前序: 现在angular2已经除了集成的angular-cli,建议大家可以基于这个来快速开发ng2的项目,不用自己再搭建环境: 相关内容请前往:https://angular.cn/docs/ts ...

  5. Memcached【第一篇】安装

    第一步:准备 1. 安装包 memcached-1.4.35.tar.gz 2. 安装 libevent 1)简介 Libevent 是一个异步事件处理软件函式库,以 BSD 许可证释出.Memcac ...

  6. 清空file文件域的方法

    我们在实际应用中经常希望能把文件域给清空,比如使用change事件时,因为不清空再次选择同一文件时将不在触发change事件. 但是在IE中,由于安全设置的原因,是不允许更改文件域的值的,也就是不能使 ...

  7. Java面试13|算法

    1.冒泡排序 for(int i=0;i<n;i++){ for(int j=0;j<n-1-i;j++){ if(temp[j]>temp[j+1]){ int t=temp[j] ...

  8. Pascal's Triangle leetcode

    Given numRows, generate the first numRows of Pascal's triangle. For example, given numRows = 5,Retur ...

  9. koahub.js 0.09 发布,新增钩子机制

    koahubjs发布0.09 新增钩子机制添加钩子机制,控制器钩子和函数钩子修复自动加载bug,实现除自动加载导出的default外,还能自动加载其他的方法记koahubjs钩子开发过程在使用koah ...

  10. webpack 安装流程

    我最近想看看wabpack,然后就面临着安装的问题,说实话,我一点也不懂cmd,怎么还需要用cmd安装呢.其实看教程上说可以在npm上安装,但是我打开npm总是出现闪退,所以我就选择了cmd 安装的过 ...