基于Flink的windows--简介

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

 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

  

时间: 2024-11-05 14:52:06

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

001 Windows 简介

001 Windows简介 #Windows 简介 Windows版本历史 16位图形用户界面 16位和32位混合操作系统 64位操作系统 移动设备操作系统 NT架构 #Windows与编程语言 Windows API SDK&API&MFC SDK (SoftWare Development Kit) API (Application Programming Interface) MFC (Microsoft Foundation Classes) Windows API分类 基础服务

基于EasyUI实现windows桌面

之前为大家介绍了 基于jquery tool实现的windows桌面效果,今天给大家带来一款基于EasyUI实现windows桌面.这款桌面适用浏览器:360.FireFox.Chrome.Safari.Opera.傲游.搜狗.世界之窗. 不支持IE8及以下浏览器.效果图如下: 在线预览   源码下载 实现的代码. js代码: $(function () { $.messager.alert("站长素材", "欢迎访问站长素材,您现在可以体验改应用了,更多JS代码请继续关注&

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

http://blog.163.com/wangxh_jy/blog/static/28233883201001581640283/ 关于详细的配置及程序运行截图,请下载:http://download.csdn.net/source/1127474名为<用Visual C#开发基于OpenCV的Windows应用程序>的文章. 由于百度允许的字数太少了,所以就不贴全部程序了.有需要源程序的话,请下载:http://download.csdn.net/source/1127477 下面是主要的

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

基于Flink进行秒级计算时,发现监控图表中CPU有数据中断现象,通过一段时间的跟踪定位,该问题目前已得到有效解决,以下是解决思路: 一.问题现象 以SQL02为例,发现本来10秒一个点的数据,有时会出现断点现象,会少1-2个点甚至更多: 二.问题定位 针对该问题,根据数据处理链路,制定了数据输出跟踪示意图,如下所示: 通过输出的实际数据发现: 1.监控Agent的数据已经正确上报Kafka 2.从Kafka中可以正确取到监控Agent上报的数据 3.从计算完毕的Kafka中取不到丢失点的数据

轻装上阵Flink--在IDEA上开发基于Flink的实时数据流程序

前言 本文介绍如何在IDEA上快速开发基于Flink框架的DataStream程序.先直接上手! 环境清单 案例是在win7运行.安装VirtualBox,在VirtualBox上安装Centos操作系统.所有资源都在百度云上,有需要请直接下载.安装教程基本都是傻瓜式,文章不做讲述,有需要直接网上搜索. 资源 版本 VirtualBox 5.2.16 Centos 6.5 Maven 3.6.3 JDK 8u241 IDEA 2019.3.2 Flink 1.10.0 链接:https://pa

网亿兴云CBlock关于分布式数据中心基于分布式存储的Windows ODX实现与优化

1.存储卸载加速的背景 服务器虚拟化成为数据中心的主流技术,大量运行的虚拟机大大提高了服务器的利用率,对虚拟机进行批量的创建.复制.迁移极大的简化了IT运维的同时,也带来了大量的数据拷贝操作,进而消耗了服务器的大量CPU.内存和网络带宽资源. 针对于这些问题,VMware提出了VAAI(vStorage API for Array Integration)接口,希望将VMware基础架构的某些功能委托给存储阵列去实现,通过减少数据对于虚拟机和物理服务器的资源消耗,从而提升VMware基础架构的性

Flink视频教程_基于Flink流处理的动态实时电商实时分析系统

课程分享地址链接:https://pan.baidu.com/s/1cX7O-45y6yUPT4B-ACfliA 密码:jqmk 在开始学习前给大家说下什么是Flink?1.Flink是一个针对流数据和批数据的分布式处理引擎,主要用Java代码实现.2.Apache Flink作为Apache的顶级项目,Flink集众多优点于一身,包括快速.可靠可扩展.完全兼容Hadoop.使用简便.表现卓越通过以上的描述大家对Flink有了一个基本的认识,本套课程不会讲解基础内容,因此建议有Flink基础的同

基于Flink的视频直播案例(上)

目录 数据产生 Logstash部分 Kafka部分 Flink部分 配置/准备代码 视频核心指标监控 本案例参考自阿里云的视频直播解决方案之视频核心指标监控和视频直播解决方案之直播数字化运营. 基于Kafka + Flink + ELK + Redis实现视频直播数据的实时处理和可视化. 选型仅仅出于练习考虑,Logstash一般会换成flume或者直接用kafka. 模拟的总体流程:通过http请求发送json到Logstash,后者将数据转发到Kafka,然后Flink拉取数据进行处理,结

基于flink的协同过滤

最近flink较火,尝试使用flink做推荐功能试试,说干就干,话说flink-ml确实比较水,包含的算法较少,且只支持scala版本,以至flink1.9已经将flink-ml移除,看来是准备有大动作,但后期的实时推荐,flink能派上大用场.所幸基于物品的协同过滤算法相对简单,实现起来难度不大.先看目前推荐整体的架构. 先说一下用到的相似算法:X=(x1, x2, x3, - xn),Y=(y1, y2, y3, - yn)那么欧式距离为: 很明显,值越大,相似性越差,如果两者完全相同,那么