在Flink入门教程(一)中提前感受了一下如何使用flink处理数据。这里再介绍下特点。
一、核心功能
Flink的核心是一个流式的数据流执行引擎,针对数据流的分布式计算提供了数据分布、数据通信以及容错机制。
- Flink支持实时Streaming和批处理Batch
- DataSet API,对静态数据进行批处理操作,将静态数据抽象成分布式数据集,可以方便的使用Flink提供的各种操作符对分布式数据集进行处理。
- DataStream API,对数据流进行流处理,将流式数据抽象成分布式的数据流,可以方便的对分布式数据流进行各种操作。
- Table API,对结构化数据进行查询操作,将结构化数据抽象成关系表,并通过类SQL的DSL对关系表进行各种查询操作。
- Flink ML,机器学习库,提供机器学习Pipelines API并实现了多种机器学习算法。
- Gelly,Flink的图计算库,提供了图计算的相关API及多种图计算算法实现。
二、测试demo
对flink程序最好的学习方式就是实际写代码测试,下面我们做几个常见的flink功能测试。
测试代码已经上传GitHub,https://github.com/fanyun7654/flink-test,可以去下载完整的demo,文章里面只介绍代码功能。如果有用可以给一颗star
- flink table SQL的测试
我目前的开发最需要的是使用flink的流式引擎处理部分,所以这里也跳过基础直接开始流式处理的测试。首先初始化流式处理环境,这里我使用了table + SQL的功能,功能是监控并且从kafka获取消息,然后吧获取的消息使用table API 创建一个虚拟表,然后使用flink提供的SQL 功能对虚拟表进行操作。
package com.fanyun.flink;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import com.fanyun.flink.destination.sql.MysqlSink;
import org.apache.flink.api.common.functions.MapFunction;
import org.apache.flin