Flink 编程接口
(1)有界数据集
(2)无界数据集
(3)统一数据处理
(1)Flink SQL
(2)Table API
(3)DataStream API 和 DataSet API
(4)Stateful Stream Process API
欢迎来 kk大数据,今天分享的是 Flink 提供了哪些编程接口可以给我们开发。
现实世界中,所有的数据都是以流式的形态产生的,不管是哪里产生的数据,在产生的过程中都是一条条地生成,最后经过了存储和转换处理,形成了各种类型的数据集。
根据现实世界中,数据产生方式和数据产生是否含有边界(具有起始点和终止点)角度,将数据分为两种类型的数据集,一种是有界数据集,另外一种是无界数据集。
(1)有界数据集
有界数据具有时间边界,在处理过程中数据一定会在某个时间范围内起始和结束,有可能是一分钟,也有可能是一天内的交易数据。
对有界数据集的数据处理方式被称为批计算,例如将数据从 RDBMS 或文件系统中读取出来,然后在分布式系统内处理,最后再将处理结果写入存储介质中,整个过程就被称为批处理。
(2)无界数据集
数据从开始生成就一直持续不断地产生新的数据,因此数据是没有边界的,例如服务器的日志,传感器信号等。
和批量数据处理方式对应,对无界数据集的处理方式被称为流式处理(Stream Process)。
可以看出,流式数据处理过程实现复杂度会更高,因为需要考虑处理过程中数据的顺序错乱,以及系统容错方面的问题。
(3)统一数据处理
有界数据集和无界数据集只是一个相对的概念,主要根据时间的范围而定,可以认为一段时间内的无界数据集其实就是有界数据集,同时有界数据也可以通过一些方法转换成无界数据集。
例如系统一年的订单交易系统,其本质上应该是有界的数据集,可是当我们把它一条一条按照产生的顺序发送到流式系统,通过流式系统对数据进行处理,在这种情况下可以认为数据是相对无界的。
对于无界数据也可以拆分成有界数据进行处理,例如将系统产生的数据接入到存储系统,按照年或月进行切割,切分成不同时间长度的有界数据集,然后就可以通过批处理方式对数据进行处理。
从以上,我们可以得出一个结论:有界数据和无界数据其实是可以相互转换的。
目前业界比较熟知的开源大数据处理框架中,能够同时支持流式计算和批量计算,比较典型的代表为 Apache Spark 和 Apacke Flink 两套框架。
Spark 是通过批处理模式来统一处理不同类型的数据集,对于流数据是将数据按照批次切分成微批(有界数据集)来进行处理。
Flink 用比较符合数据产生的规律方式处理流式数据,对于有界数据可以转换成无界数据统一处理,最终将批处理和流处理统一在一套流式引擎中。
说完了数据集类型之后,我们来看看 Flink 提供了哪些编程接口来处理数据。
Flink 根据数据集类型的不同将核心数据处理接口分为两大类,一类是 批计算接口 DataSet API,一类是支持流式计算的接口 DataStream API。
同时 Flink 将数据处理接口抽象成四层,由上而下分别为 SQL API,Table API,DataStream/DataSet API,以及 StateFul Stream Processing API
(1)Flink SQL
Flink 提供了统一的 SQL API 完成对批计算和流计算的处理,SQL语言具有比较低的学习成本,能够让数据分析人员和开发人员快速的上手
(2)Table API
Table API 将内存中的 DataStream 和 DataSet 数据集在原有的基础之上增加 Schema 信息,将数据类型统一抽象成表结构,然后通过 Table API 提供的接口处理对应的数据集。
SQL API 可以直接查询 Table API 中注册表中的数据表。
Table API 构建在 DataStream 和 DataSet 之上的同时,提供了大量面向领域语言的编程接口,例如 GroupByKey,Join 等操作符,提供给用户一种更加友好的处理数据集的方式。
同时 Table API 在转换为DataStream 和 DataSet 的数据处理过程中,也应用了大量的优化规则对处理逻辑进行了优化。
(3)DataStream API 和 DataSet API
DataStream API 处理流式数据,DataSet API 处理批量数据,用户 可以使用 map,filter,join,aggregation,window 等方法,同时每种接口都支持了 Java、Scala 及 Python 多种语言
(4)Stateful Stream Process API
这个 Api 是Flink 中处理 Stateful Stream 最底层的接口,用户可以通过这个 api 接口操作状态、时间等底层数据。
使用 Stateful Stream Process API 接口开发应用灵活性非常强,可以实现非常复杂的流式计算逻辑,但是相对用户使用成本也比较高,一般企业使用Flink 进行二次开发或深度封装的时候会用到这层接口。
Yahoo 的 Storm 团队曾发表了一篇博客文章 ,并在其中展示了 Storm、Flink 和 Spark […]...
流处理是 Flink 的核心,流处理的数据集用 DataStream 表示。数据流从可以从各种各样的数据源中创 […]...
概述 Flink具有Table API和SQL-用于统一流和批处理。 Table API是用于Scala和Ja […]...
Flink基于用户程序生成JobGraph,提交到集群进行分布式部署运行。本篇从源码角度讲解一下Flink […]...
响应式编程框架也早已有了背压以及丰富的操作符支持,能不能用响应式编程框架处理类似Flink的操作呢,答案是肯定 […]...
1. Flink简介 Apache Flink是一个面向分布式数据流处理和批量数据处理的开源计算平台,它能够基 […]...
目录一、DataStream API概述二、什么是DataStream ?三、DataStream 数据处理过程1)Data Sources(数据源)1、Data Sources 原理2、Data Sources 实现方式1)基于文件2)...
数据来源:系统中可以采集到的数据,如用户数据、业务数据等,也包含系统运行时产生的日志数据等。 数据采集 […]...
今天给大家介绍目前市面上常用的kubernetes管理工具,总有一款适合您~~~ 简介 Kubectl K9s […]...
物体检测算法 SSD 的训练和测试 GitHub:https://github.com/stoneyan […]...
View Post Apache安装,亲测成功 工作需要,为一台空白服务器安装apache,小白程序员,搞了一 […]...
通常防止爬虫被反主要有以下几个策略: 1.动态设置User-Agent(随机切换User-Agent,模拟不 […]...
Activiti-Crystalball简介 Activiti-Crystalball (CrystalBal […]...
dns,domain name system,域名系统,把域名转化成ip的系统。 先来看几上工具的使用,这几个 […]...
这篇文章我就来介绍一下如何在一台全裸的阿里云主机上搭建自己的git服务器。 1. 安装git 首先安装git, […]...
★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★➤微信公众号:山青咏芝(sha […]...
Powered By WordPress