编程模型

应该说Flink的编程编程模型和Spark Streaming的DStream还是非常相似的,也是抽象出了Stream概念来表示没有边界的数据流,针对Stream所施加的操作被称之为”transformation”,它会把一个流转换成另一个流作为转换的输出。与很多流计算模型一样,流的起点往往是数据的输入源,被称之为”source”,流的终点是数据的输出目的地,被成为“sink”。下 图形象地展示了Flink的流计算编程模型:

窗口计算

Flink同样支持窗口计算,并且提供多种不同的时间概念供开发者选择,这些时间概念包括:

  1. 事件时间:是事件创建的时间。它通常由事件中的时间戳描述,例如附接在生产传感器,或者生产服务。Flink通过时间戳分配器访问事件时间戳。
  2. 摄入时间:是事件进入Flink数据流源的时间。
  3. 处理时间:是每一个操作在执行时的本地时间。

这是我们第一次系统地梳理流计算时关于”时间”的概念,在前面介绍Spark Streaming时我们提到了事件时间,大多数时候,事件时间总是更具有实际参考价值,但是全面了解一下这三种时间的定义还是很有必要的,Flink正好给我们总结归纳好了:

批处理与更多的编程模型

Flink确实走了一条“不寻常”的路,它以它的流计算内核为基础,将数据处理能力从流计算拓展到了批处理,进而又在更上层提供了面向不同的计算需求的”上层库”,下图展示了Flink整体的架构和编程接口:

在流处理方面,Flink以DataStream API为基础,向上封装了两个DSL的库,一个是面向复杂事件处理的库:FlinkCEP,另一个是面向结构化数据操作的Table/sql引擎。在批处理方面,Flink提供了一组专门面向批处理的API- DataSet,然后以这个批处理平台为支撑,向上又分装了机器学习库FlinkML,图计算库Gelly以及Table /sql引擎。所以说,Flink并不是一个单纯的流计算引擎,而是和Spark一样,以一个核心的库或底层运行时为基础,同时提供流计算和批处理引擎,然后再向上分装各类应用库,进而形成了一个大的生态系统。

Flink初探的更多相关文章

  1. 视频流 – 使用视频工具箱解码iOS 8中的h264

    需要解码h264流并获取像素缓冲区我知道iOS8上的视频工具箱可能1.如何将h264流转换为CMSampleBufferRef?

  2. ios – 访问文件属性与访问sqlite记录

    >看到上述结果后,我决定选择attributesOfItemAtPath方法.还有什么我不是考虑传递sqlite?

  3. ios – NSTimeInterval到unix时间戳

    我从cmmotionmanager获取CMDeviceMotion对象.CMDeviceMotion的一个属性是时间戳,表示为NSTimeInterval.根据文档,这允许“亚毫秒”时间戳精度.不幸的是,NSTimeInterval是自上次设备启动以来计算的,对以原始形式使用它提出了重大挑战.有没有人有一个工作代码将此NSTimeInterval转换为类似时间戳的Unix?解决方法在将磁力计值与CoreMotion事件进行比较时,我遇到了类似的问题.如果要转换这些NSTimeIntervals,您只需要计

  4. ios – 更改JSQMessagesViewController中的时间戳逻辑

    SOMessaging一天一天怎么样?

  5. 如何从iOS中的CMSampleBufferRef获取相机数据当前捕获的时间戳

    我开发和iOS应用程序,将捕获的相机数据保存到一个文件,我使用捕获CMSampleBufferRef,并将编码为H264格式,帧将使用AVAssetWriter保存到文件.我遵循示例源代码来创建此应用程序:http://www.gdcl.co.uk//2013/02/20/iOS-Video-Encoding.html现在我想获得保存的视频帧的时间戳来创建一个新的电影文件,为此我做了以下事情1)找

  6. ios – 如何维护两个不同设备之间的时钟会话?

    我正在研究iOS应用程序,它需要在接受两个设备用户时在两个设备之间维持时钟计时器会话?但我不确定如何在两台设备上都没有时间缺陷的情况下实现这一目标?

  7. Swift开发用到的一些工具类

  8. Swift&Cocoa实战之数据类型:时间日期

    时间日期NSDate在Objective-C中,可以使用如下的代码创建一个UTC的时间:但是在Swift中,如果使用如下方式:获取到的会是本地时间。

  9. swift - DateUtil

  10. swift 移动支付之【微信支付】开发步骤

    //向微信注册WXApi.registerapp2.发送预支付数据预支付数据由后台返回,格式如下[plain]viewplaincopyprint?{"appid":"wxxxxxxxxxxx","noncestr":"Hk8dsZoMOdTXGjkJ","package":"Sign=WXPay","partnerid":"01001010110","prepayid":"wx2016050000000000000000000000","sign":"B4879FFFA8B65522A04034E2D0

随机推荐

  1. static – 在页面之间共享数据的最佳实践

    我想知道在UWP的页面之间发送像’selectedItem’等变量的最佳做法是什么?创建一个每个页面都知道的静态全局变量类是一个好主意吗?

  2. .net – 为Windows窗体控件提供百分比宽度/高度

    WindowsForm开发的新手,但在Web开发方面经验丰富.有没有办法为Windows窗体控件指定百分比宽度/高度,以便在用户调整窗口大小时扩展/缩小?当窗口调整大小时,可以编写代码来改变控件的宽度/高度,但我希望有更好的方法,比如在HTML/CSS中.在那儿?

  3. 使用Windows Azure查询表存储数据

    我需要使用特定帐户吗?>将应用程序部署到Azure服务后,如何查询数据?GoogleAppEngine有一个数据查看器/查询工具,Azure有类似的东西吗?>您可以看到的sqlExpressintance仅在开发结构中,并且一旦您表示没有等效,所以请小心使用它.>您可以尝试使用Linqpad查询表格.看看JamieThomson的thispost.

  4. windows – SetupDiGetClassDevs是否与文档中的设备实例ID一起使用?

    有没有更好的方法可以使用DBT_DEVICEARRIVAL事件中的数据获取设备的更多信息?您似乎必须指定DIGCF_ALLCLASSES标志以查找与给定设备实例ID匹配的所有类,或者指定ClassGuid并使用DIGCF_DEFAULT标志.这对我有用:带输出:

  5. Windows Live ID是OpenID提供商吗?

    不,WindowsLiveID不是OpenID提供商.他们使用专有协议.自从他们的“测试版”期结束以来,他们从未宣布计划继续它.

  6. 如果我在代码中进行了更改,是否需要重新安装Windows服务?

    我写了一个Windows服务并安装它.现在我对代码进行了一些更改并重新构建了解决方案.我还应该重新安装服务吗?不,只需停止它,替换文件,然后重新启动它.

  7. 带有双引号的字符串回显使用Windows批处理输出文件

    我正在尝试使用Windows批处理文件重写配置文件.我循环遍历文件的行并查找我想要用指定的新行替换的行.我有一个’函数’将行写入文件问题是%Text%是一个嵌入双引号的字符串.然后失败了.可能还有其他角色也会导致失败.如何才能使用配置文件中的所有文本?尝试将所有“在文本中替换为^”.^是转义字符,因此“将被视为常规字符你可以尝试以下方法:其他可能导致错误的字符是:

  8. .net – 将控制台应用程序转换为服务?

    我正在寻找不同的优势/劣势,将我们长期使用的控制台应用程序转换为Windows服务.我们为ActiveMQ使用了一个叫做java服务包装器的东西,我相信人们告诉我你可以用它包装任何东西.这并不是说你应该用它包装任何东西;我们遇到了这个问题.控制台应用程序是一个.NET控制台应用程序,默认情况下会将大量信息记录到控制台,尽管这是可配置的.任何推荐?我们应该在VisualStudio中将其重建为服务吗?我使用“-install”/“-uninstall”开关执行此操作.例如,seehere.

  9. windows – 捕获外部程序的STDOUT和STDERR *同时*它正在执行(Ruby)

    哦,我在Windows上:-(实际上,它比我想象的要简单,这看起来很完美:…是的,它适用于Windows!

  10. windows – 当我试图批量打印变量时,为什么我得到“Echo is on”

    我想要执行一个简单的批处理文件脚本:当我在XP中运行时,它给了我预期的输出,但是当我在Vista或Windows7中运行它时,我在尝试打印值时得到“EchoisOn”.以下是程序的输出:摆脱集合表达式中的空格.等号(=)的两侧可以并且应该没有空格BTW:我通常在@echo关闭的情况下启动所有批处理文件,并以@echo结束它们,所以我可以避免将代码与批处理文件的输出混合.它只是使您的批处理文件输出更好,更清洁.

返回
顶部