基于Flink的windows--简介
新的一年,新的开始,新的习惯,现在开始。
1.简介
Flink是德国一家公司名为dataArtisans的产品,2016年正式被apache提升为顶级项目(地位同spark、storm等开源架构)。并且在2016年里,共发布了包括1.0.0版本在内的10个版本,发展速度可想而知。这次学习的是Flink的核心Feature,windows。
//dataArtisans官网:
//apache Flink官网:
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--简介的更多相关文章
- 【新鲜出炉的个人项目】基于 Flink 的商品推荐系统
FlinkCommodityRecommendationSystem Recs FlinkCommodityRecommendationSystem(基于 Flink 的商品推荐系统) 1. 前言 系 ...
- [转帖]Flink(一)Flink的入门简介
Flink(一)Flink的入门简介 https://www.cnblogs.com/frankdeng/p/9400622.html 一. Flink的引入 这几年大数据的飞速发展,出现了很多热门的 ...
- Lyft 基于 Flink 的大规模准实时数据分析平台(附FFA大会视频)
摘要:如何基于 Flink 搭建大规模准实时数据分析平台?在 Flink Forward Asia 2019 上,来自 Lyft 公司实时数据平台的徐赢博士和计算数据平台的高立博士分享了 Lyft 基 ...
- Plink v0.1.0 发布——基于Flink的流处理平台
Plink是一个基于Flink的流处理平台,旨在基于 [Apache Flink]封装构建上层平台. 提供常见的作业管理功能.如作业的创建,删除,编辑,更新,保存,启动,停止,重启,管理,多作业模板配 ...
- 字节跳动流式数据集成基于Flink Checkpoint两阶段提交的实践和优化
背景 字节跳动开发套件数据集成团队(DTS ,Data Transmission Service)在字节跳动内基于 Flink 实现了流批一体的数据集成服务.其中一个典型场景是 Kafka/ByteM ...
- 基于EasyUI实现windows桌面
之前为大家介绍了 基于jquery tool实现的windows桌面效果,今天给大家带来一款基于EasyUI实现windows桌面.这款桌面适用浏览器:360.FireFox.Chrome.Safar ...
- 基于Flink秒级计算时CPU监控图表数据中断问题
基于Flink进行秒级计算时,发现监控图表中CPU有数据中断现象,通过一段时间的跟踪定位,该问题目前已得到有效解决,以下是解决思路: 一.问题现象 以SQL02为例,发现本来10秒一 ...
- C#/.NET基于Topshelf创建Windows服务程序及服务的安装和卸载(极速,简洁)
本文首发于:码友网--一个专注.NET/.NET Core开发的编程爱好者社区. 文章目录 C#/.NET基于Topshelf创建Windows服务的系列文章目录: C#/.NET基于Topshelf ...
- 用Visual C#开发基于OpenCV的Windows应用程序
http://blog.163.com/wangxh_jy/blog/static/28233883201001581640283/ 关于详细的配置及程序运行截图,请下载:http://downloa ...
随机推荐
- Easyui _treegrid 动态加载子节点
<table id="dg" class="easyui-treegrid" title="数据字典列表" data-options= ...
- 做推送,怎么能不了解推送的 4 种消息形式呢?( Android 篇)
极光推送是为 App 提供第三方推送服务的平台之一,它提供四种消息形式:通知,自定义消息,富媒体和本地通知. 笔者将基于官方说明与个人理解来谈一下这四种消息.本篇为 Android 篇,iOS 篇入口 ...
- 3月题外:关于GeoServer和OpenLayers3实用开源插件或组件的总结
Geoserver篇 注意: 1)用法 GeoServer-Extension的使用方法:将jar包直接放入部署在tomcat上的geoserver/WEB-INF/lib文件夹中 2)在安装插件时, ...
- C/C++学习路线图
文章转载自「开发者圆桌」一个关于开发者入门.进阶.踩坑的微信公众号 这里整理的C/C++学习路线图包含初中高三个部分,你可以通过百度云盘下载观看对应的视频 链接: http://pan.baidu.c ...
- (十) Jquery的基本使用
一.引入 注意:如果在index.js中有使用到JQuery.js 那么JQuery.js文件必须比index.js文件先引入,否则index.js文件中不能使用JQuery.js. <scri ...
- KoaHub.JS基于Node.js开发的处理和显示日期代码
moment Parse, validate, manipulate, and display dates A lightweight JavaScript date library for ...
- 1054: [HAOI2008]移动玩具
1054: [HAOI2008]移动玩具 Time Limit: 10 Sec Memory Limit: 162 MBSubmit: 1272 Solved: 690[Submit][Statu ...
- 10分钟精通SharePoint - SharePoint定位
平台 – "一栋楼房的框架结构" 扩展 – "用户可以根据自己需要随意装修房间"集成 – "插拔式的系统集成能力"业务– "既是全 ...
- Halloc内存分配器
MAX_NSBS 8192:默认的最大superblocks数量 SB_SET_SZ(MAX_NSBS / WORD_SZ):superblock set的大小,每个set32个superblcoks ...
- 一名合格的JAVA程序员需要点亮那些技能树?
这是从450家企业的招聘信息中统计而来,相对来说还是比较真实的,虽然有些公司的招聘要求万年不变,但还是可以大致反应企业的招聘要求的. 尽管Struts2漏洞频出,但是由于政府.银行以及传统企业遗留项目 ...