
Flink
多易教育Flink入门到精通 自学
zhuzuwei
这个作者很懒,什么都没留下…
展开
-
Flink学习22---window和Time(五)WaterMark延迟触发任务机制
此处举例说明WaterMark可能更容易理解,以EventTimeTumblingWindow为例:如果设置窗口时间大小是10秒,窗口的边界可以是10000-19999;WaterMark延迟2秒,那么当EventTime为21999的数据来到时,会触发计算EventTime为21999之前的所有EventTime在10000-19999之间的数据。即,真实要计算的时间窗口不变,部分迟到的数据会被纳入这个窗口一起计算。如果是多并行的source,则每个分区中都要满足上述条件,才会触发计算原创 2020-07-14 01:43:10 · 650 阅读 · 0 评论 -
Flink学习21---window和Time(四)会话窗口SessionWindow
输入样例数据如下,SessionWinow会把1588510000-1588515000划分为一个窗口,1588526100-1588535000作为第二个窗口,然后分别对每个窗口中的数据进行计算。package flink.review.datastream.E_Window;import com.demo.flink.countWindow.CountWindow;import com.demo.flink.timeWindow.SessionWindow;import o.原创 2020-07-13 00:12:26 · 701 阅读 · 0 评论 -
Flink学习20---window和Time(三)TimeTumblingWindw时间滚动窗口
如下代码中,时间滚动窗口的大小是10秒,可知,1588490000至1588499999为一个窗口,本例测试数据可分为两个窗口,输出结果如下。import org.apache.flink.api.common.functions.MapFunction;import org.apache.flink.api.java.tuple.Tuple2;import org.apache.flink.api.java.tuple.Tuple3;import org.apache.fl...原创 2020-07-12 22:40:28 · 771 阅读 · 0 评论 -
Flink学习19---window和Time(二)Time与watermarks详解
当我们在使用Flink的时候,避免不了要和时间(time)、水位线(watermarks)打交道,理解这些概念是开发分布式流处理应用的基础。那么Flink支持哪些时间语义?Flink是如何处理乱序事件的?什么是水位线?水位线是如何生成的?水位线的传播方式是什么?让我们带着这些问题来开始本文的内容。时间语义基本概念时间是Flink等流处理中最重要的概念之一,在 Flink 中 Time 可以分为三种:Event-Time,Processing-Time 以及 Ingestion-Time,如下图所转载 2020-07-12 21:48:01 · 629 阅读 · 1 评论 -
Flink学习18---window和Time(一)window全面解析
Flink认为Batch是Streaming的一个特例,window就是用来对一个无限的流设置一个有限的集合,从而在有界的数据集上进行操作的一种机制。一、Window简介1.Window根据类型可分为两种: (1) Tumbling Window: 滚动窗口,窗口内数据没有重叠;(2)Sliding Window: 滑动窗口,窗口内数据有重叠。可以根据Time,Count或者自定义划分Window,每种划分又可以分别对应滚动和滑动。2. TimeWindow 根据时间对数...转载 2020-07-12 21:47:47 · 2139 阅读 · 1 评论 -
Flink学习17---容错机制(七)深入理解KeyedState,使用keyedState实现累加功能
直接上代码如下:import org.apache.flink.api.common.functions.MapFunction;import org.apache.flink.api.common.restartstrategy.RestartStrategies;import org.apache.flink.api.java.tuple.Tuple;import org.apache.flink.api.java.tuple.Tuple2;import org.apache.flink.原创 2020-07-12 18:20:54 · 583 阅读 · 0 评论 -
Flink学习16---容错机制(六)深入理解OperatorState,自定义实现ExactlyOnce多并行Source
FlinkKafkaConsumer内部实现了ExactlyOnce,如果使用自定义多并行Source,也可以借助Operator实现ExactlyOnce。import org.apache.flink.api.common.state.ListState;import org.apache.flink.api.common.state.ListStateDescriptor;import org.apache.flink.api.common.typeinfo.Types;import.原创 2020-07-12 17:49:59 · 915 阅读 · 0 评论 -
Flink学习15---容错机制(五)checkpoints保存报错 Could not flush and close the file system output stream to hdfs
在保存checkpints的时候,可能会出现保存失败的情况。我遇到的报错如下:Could not flush and close the file system output stream to hdfs:....could only be replicated to 0 nodes instead of minReplication (=1). There are 2 datanode(s) running and no node(s) are excluded in this operation原创 2020-07-11 01:28:25 · 1485 阅读 · 0 评论 -
Flink学习14---容错机制(四)StateBackend和SavePoint的使用
1. 设置StateBackend 模式,此处以保存到hdfs为例在flink-conf.yaml中设置 state.backend为filesystem;设置state.backend.fs.checkpointdir 即checkpoints的保存路径。也可在程序中指定checkpoints的保存路径。env.setStateBackend(new FsStateBackend("hdfs://192.168.***.***:9000/flink/checkpoints"));注原创 2020-07-11 01:20:07 · 1318 阅读 · 0 评论 -
Flink学习13---容错机制(三)KeyedState和OperatorState认识
现结合Kafka数据源,利用KeyedState实现累加功能,通过OperatorState记录已读取数据偏移量,并在重启启动时能接着上次的累加次数和偏移量继续计算。原创 2020-07-09 23:22:02 · 466 阅读 · 0 评论 -
Flink学习12---容错机制(二)重启策略实例
示例代码如下:1. 首先要开启checkpointing, 如 env.enableCheckpointing(5000);2. 选择一种重启策略//固定间隔重启:最多重启五次,重启间隔2000毫秒 env.setRestartStrategy(RestartStrategies.fixedDelayRestart(5,2000));//失败率:failureRate是每个测量时间间隔最大失败次数//第二个参数failureInterval失败率测量的时间间隔; //第..原创 2020-07-08 00:45:03 · 585 阅读 · 0 评论 -
Flink学习11---容错机制(一)State,CheckPoint 及重启策略简介
Flink的流计算是带状态的计算,为例更好的容错,引入了State和CheckPoint。一、简介1. State一般指一个具体的Task/Operator的状态,State数据默认保持在Java的堆内存中。2. CheckPoint (可以理解为CheckPoint是把State数据持久化存储了),则表示了一个Flink Job在一个特定时刻的一份全局状态快照(可以设置快照生成周期),即包含了所有Task/Operator的状态。# 此处的Task是Flink中执行的基本单位,也有的地方叫原创 2020-07-08 00:44:19 · 854 阅读 · 1 评论 -
Flink学习10---DataStream之Sink简介及RichSinkFunction
功能就是负责把 Flink 处理后的数据输出到外部系统中。一、Flink针对DataStream提供了大量的已经实现的数据下沉(sink)方式,具体有:1. writeAsText(): 将元素以字符串形式逐行写入,这些字符串通过调用每个元素的toString()方法来获取。2. print() / printToErr(): 打印每个元素的toString()方法的值到标准输出或者标准错误输出流中。3. 自定义输出:addSink可以实现把数据输出到第三方存储介质中。Flink通过内置原创 2020-07-05 23:30:08 · 7124 阅读 · 1 评论 -
Flink学习9---DataStream之功能更丰富的Transformation算子RichMapFunction
Flink还提供了功能更丰富的Transformation实现接口。RichFuction除了提供原来MapFuction的方法之外,还提供open, close, getRuntimeContext 和setRuntimeContext方法,这些功能可用于参数化函数(传递参数),创建和完成本地状态,访问广播变量以及访问运行时信息以及有关迭代中的信息。import org.apache.flink.api.common.functions.FilterFunction;import org.原创 2020-07-05 17:54:38 · 2055 阅读 · 0 评论 -
Flink学习8---DataStream之Transformation算子简介
一、Flink针对DataStream提供了大量的已经实现的算子。1. map: 输入一个元素,返回一个元素,中间可以进行清洗转换等操作。2.FlatMap: 压平,即将嵌套集合转换并平铺成非嵌套集合,可以根据业务需求返回0个、一个或者多个元素。3. Filter: 过滤函数,对传入的数据进行判断,符合条件的数据才会被留下。4.KeyBy: 根据指定的Key进行分组,Key相同的数据会进入同一个分区。用法: (1)DataStream.keyBy("key")指定对象中的具体key字段.原创 2020-07-05 15:53:14 · 728 阅读 · 0 评论 -
Flink学习6---DataStream之DataSource API (五)RichParallelSourceFunction自定义多并行DataSource
自定义多并行DataSource必须继承 RichParallelSourceFunction 类,并重写run()和cancel()方法。import org.apache.flink.api.java.tuple.Tuple2;import org.apache.flink.streaming.api.functions.source.RichParallelSourceFunction;import java.io.RandomAccessFile;// 这里的泛型Tuple2是该sou原创 2020-07-05 14:46:08 · 1522 阅读 · 0 评论 -
Flink学习7---DataStream之DataSource API (六)不同数据源及容错性总结
1. Flink提供的这些数据源接口的容错性保证如下表。DataSource 语义保证 备注 File Exactly-once Collection Exactly-once Socket At-most-once Kafka Exactly-once 需要使用0.10及以上版本 2. Flink可通过内置的Connector连接器,提供对应的Source支持连接器 是否提供Source支持 是原创 2020-07-05 12:27:10 · 674 阅读 · 0 评论 -
Flink学习5---DataStream之DataSource API (四)addSource用法
addSource可以实现读取第三方数据源的数据。1. 此处以读取kafka数据为例 (kafka集群安装参考https://blog.youkuaiyun.com/zhuzuwei/article/details/107136796)import org.apache.flink.api.common.serialization.SimpleStringSchema;import org.apache.flink.streaming.api.datastream.DataStreamSource;im.原创 2020-07-05 12:15:16 · 6183 阅读 · 1 评论 -
Flink学习5---DataStream之DataSource API (三)基于集合的fromCollection
fromCollection 可直接从集合中读取数据作为流,由于集合是有界的,所以该数据流有界,读完之后程序会自动退出。是非并行的DataSource,主要用于测试。import org.apache.flink.streaming.api.datastream.DataStreamSource;import org.apache.flink.streaming.api.environment.StreamExecutionEnvironment;import java.util.Array原创 2020-07-04 00:58:20 · 3108 阅读 · 0 评论 -
Flink学习4---DataStream之DataSource API (二)基于文件的readTextFile
readTextFile 接口可读取指定文本文件,遵循TextInputFormat逐行读取规则并返回。(在TextInputFormat中,文本文件中的每一行都是一条记录。 值是行的内容,而Key是行的字节偏移量。)import org.apache.flink.streaming.api.datastream.DataStream;import org.apache.flink.streaming.api.environment.StreamExecutionEnvironment;pu原创 2020-07-04 00:50:17 · 2150 阅读 · 0 评论 -
Flink学习3---DataStream之DataSource API (一)基于Socket的SocketTextStream
Flink中非并行的Source包括socketTextStream、fromElements、fromCollection 等,主要用于测试程序。1. socketTextStream 可以从socke端口读取数据流,示例如下:import org.apache.flink.streaming.api.datastream.DataStream;import org.apache.flink.streaming.api.environment.StreamExecutionEnvironmen原创 2020-07-03 22:51:47 · 3350 阅读 · 0 评论 -
Flink学习1---flink简介
基于多易教育的flink入门教程:https://www.bilibili.com/video/BV1ZJ411S7Pm?p=11原创 2020-07-03 22:08:13 · 583 阅读 · 0 评论 -
Flink学习2---flink的standalone模式集群安装
Standalone集群模式是Flink自带的,此处仅供学习使用,真正的生产环境还是使用on yarn模式较多。安装步骤如下:(以1.9.1版本为例)1. 下载flink安装包,地址:https://flink.apache.org/downloads.html2. 上传到linux服务器上后解压,并将flink-shaded-hadoop-2-uber-2.7.5-9.0.jar拷贝到flink解压包中的Lib目录下。3. 修改conf目录下的配置文件flink-conf.yaml配置原创 2020-07-03 22:08:30 · 3321 阅读 · 0 评论