Flink教程
文章平均质量分 74
Flink教程
大小宝
Whole bikaqiu
展开
-
【01】Flink 之理论学习
1 Flink 理论基础1.1 实时计算对比Storm 延迟低但吞吐量小Spark Streaming 吞吐量大但是延迟高Flink 是一种兼具低延迟和高吞吐量特点的流式计算技术,还是一套框架中同时支持批处理和流处理的一个计算平台1.2 Flink 特性高吞吐、低延迟、高性能支持带事件时间的窗口(window)操作:time、count、session, data-drive...原创 2019-05-04 13:08:45 · 869 阅读 · 2 评论 -
【10】Flink 之 DataSet API(四):Broadcast & Accumulators & Counters
1、Flink Broadcast(广播变量)1.1、介绍广播变量允许编程人员在每台机器上保持1个只读的缓存变量,而不是传送变量的副本给tasks广播变量创建后,它可以运行在集群中的任何function上,而不需要多次传递给集群节点。另外需要记住,不应该修改广播变量,这样才能确保每个节点获取到的值都是一致的一句话解释,可以理解为是一个公共的共享变量,我们可以把一个dataset...原创 2019-06-03 14:18:41 · 1600 阅读 · 0 评论 -
【11】Flink 之 DataSet API(五):Distributed Cache(分布式缓存)
1、Distributed Cache(分布式缓存)Flink提供了一个分布式缓存,类似于hadoop,可以使用户在并行函数中很方便的读取本地文件此缓存的工作机制如下:程序注册一个文件或者目录(本地或者远程文件系统,例如hdfs或者s3),通过ExecutionEnvironment注册缓存文件并为它起一个名称。当程序执行,Flink自动将文件或者目录复制到所有taskmanager节点的本...原创 2019-06-03 14:35:16 · 866 阅读 · 0 评论 -
【20】Flink 实战案例开发(二):数据报表
需求分析主要针对直播/短视频平台审核指标的统计统计不同大区每1 min内过审(上架)的数据量统计不同大区每1 min内未过审(下架)的数据量统计不同大区每1 min内加黑名单的数据量...原创 2019-06-19 20:27:42 · 5433 阅读 · 3 评论 -
【12】Flink 之 状态(State)管理与CheckPoint容错恢复
1、状态(State)管理与恢复1.1、状态(State)我们前面写的word count的例子,没有包含状态管理。如果一个task在处理过程中挂掉了,那么它在内存中的状态都会丢失,所有的数据都需要重新计算。从容错和消息处理的语义上(at least once, exactly once),Flink引入了state和 checkpoint。首先区分一下两个概念state一般指一个具体的...原创 2019-06-03 22:29:06 · 2684 阅读 · 1 评论 -
【13】Flink 之 Restart Strategies(重启策略)
1、Restart StrategiesFlink支持不同的重启策略,以在故障发生时控制作业如何重启集群在启动时会伴随一个默认的重启策略,在没有定义具体重启策略时会使用该默认策略。 如果在工作提交时指定了一个重启策略,该策略会覆盖集群的 默认策略默认的重启策略可以通过 Flink 的配置文件 flink-conf.yaml 指定。配置参数 restart-strategy 定义了哪个策略被...原创 2019-06-04 11:51:03 · 1497 阅读 · 0 评论 -
【14】Flink 之 Window(窗口)
1、Flink Window1.1、Window(窗口)聚合事件(比如计数、求和)在流上的工作方式与批处理不同。比如,对流中的所有元素进行计数是不可能的,因为通常流是无限的(无界的)。所以,流上的聚合需要由 window 来划定范围,比如 “计算过去的5分钟” ,或者 “最后100个元素的和” 。window是一种可以把无限数据切割为有限数据块的手段窗口可以是 时间驱动的 【Ti...原创 2019-06-04 16:24:52 · 2803 阅读 · 1 评论 -
【17】Flink 之 并行度(Parallel)及设置
1、TaskManager 和 SlotFlink的每个TaskManager为集群提供solt。 solt的数量通常与每个TaskManager节点的可用CPU内核数成比例。一般情况下你的slot数是你每个节点的cpu的核数。 Slot 是进程,如果使用Flink on Yarn 模式不需要考虑资源的配置。2、并行度(Parallel)一个Flink程序由多个任务组成(sou...原创 2019-06-04 20:53:20 · 15601 阅读 · 0 评论 -
【15】Flink 之 Time & EventTime & Watermarks
1、Time介绍针对stream数据中的时间,可以分为以下三种Event Time:事件真正产生的时间,它通常由事件中的时间戳描述。Ingestion time:事件进入Flink的时间Processing Time:事件被处理时当前系统的时间1.1、Time例子分析原始日志如下2019-05-10 10:00:01,134 INFO executor.Executo...原创 2019-06-04 20:55:01 · 284 阅读 · 1 评论 -
【18】Flink 之 支持的DataType和序列化
1、Flink支持的DataTypeJava Tuple 和 Scala case classJava POJOs:java实体类 - Primitive Types 默认支持java和scala基本数据类型 - General Class Types 默认支持大多数java和scala class - Hadoop Writables 支持hadoop...原创 2019-06-05 09:53:28 · 1649 阅读 · 0 评论 -
【09】Flink 之 DataSet API(三):DataSet Sink 操作
1、DataSet Sink 数据输出在Data Source部分和其他部分使用过写文件和打印操作,代码相同,只对理论进行介绍1.1、分类writeAsText():将元素以字符串形式逐行写入,这些字符串通过调用每个元素的toString()方法来获取writeAsCsv():将元组以逗号分隔写入文件中,行及字段之间的分隔是可配置的。每个字段的值来自对象的toString()方法p...原创 2019-06-01 22:26:25 · 2035 阅读 · 0 评论 -
【02】Flink 之滑动窗口统计单词个数WordCount
1、理论滑动窗口计算2、实践开发Flink程序开发步骤:获得一个执行环境加载/创建 初始化数据指定操作数据的 transaction 算子指定把计算好的数据放在哪调用execute()触发执行程序注意:Flink程序是延迟计算的,只有最后调用execute()方法的时候才会真正触发执行程序。延迟计算好处:可以开发复杂的程序,Flink可以将复杂的程序转成一个Plan,将...原创 2019-05-04 13:05:23 · 6950 阅读 · 5 评论 -
【05】Flink 之 DataStream API(三):Partition 操作
DataStream API Partion 部分操作Random partitioning:随机分区dataStream.shuffle()源码Rebalancing:对数据集进行再平衡,重分区,消除数据倾斜dataStream.rebalance()源码## Rescaling:Rescaling解释:举个例子:如果上游操作有2个并发,而下游操作有4个并发,那么上游的一...原创 2019-05-31 23:28:17 · 1187 阅读 · 0 评论 -
【04】Flink 之 DataStream API(二):Transformations 操作
DataStream API Transformations 部分操作keyBy()keyBy()中的数据类型要不是tuple,要不是自定义类型,如Long就不可以进行keyBy操作两种典型用法:dataStream.keyBy(“someKey”) // 指定对象中的 "someKey"字段作为分组keydataStream.keyBy(0) // 指定Tuple中的第一...原创 2019-05-31 23:17:23 · 648 阅读 · 3 评论 -
【06】Flink 之 DataStream API(四):Data Sink 和 自定义Sink
1、DataStream API(一):Data Sink1.1、Data Sink介绍sink是程序的数据输出,可以通过StreamExecutionEnvironment.addSink(sinkFunction)来为程序添加一个sink。flink提供了大量的已经实现好的sink方法,也可以自定义sink1.2、Data Sink类型writeAsText():将元素以字符串...原创 2019-05-12 23:41:13 · 7218 阅读 · 2 评论 -
【03】Flink 之 DataStream API(一):Data Source 和 自定义Source
实现无并行度的自定义Source1、run方法重写(主要的方法):启动一个source注意:继承接口 SourceFunction的时候需要指定泛型,否则会报错如:SourceFunction,即run中产生的数据类型SourceFunction 和 SourceContext 都需要指定在大部分情况下,都需要在这个run方法中实现一个循环,就可以循环产生数据传入参数 (S...原创 2019-05-13 23:17:42 · 3808 阅读 · 3 评论 -
【16】Flink 之 EventTime 和 Watermark 结合使用解决乱序数据
1、需求分析对于解决乱序数据问题,需要EventTime 和 Watermarks结合使用。由【15】Flink 之 Time & EventTime & Watermarks可知,Watermarks有两种生成方式,其中With Periodic Watermarks较为常用,采用该方式进行分析。需要实现接口AssignerWithPeriodicWatermarks,下面...原创 2019-06-06 16:28:43 · 785 阅读 · 4 评论 -
【07】Flink 之 DataSet API(一):Data Source
1、DataSet API之Data Sources基于文件readTextFile(path)基于集合fromCollection(Collection)实际中第一种较长使用,两种的操作方法同DataStream里Data Source的操作2、基于文件Data Source实践2.1、代码实现完整代码如下:package com.Batch;impor...原创 2019-06-01 15:54:16 · 3947 阅读 · 0 评论 -
【08】Flink 之 DataSet API(二):Transformation 操作
1、DataSet Transformations 部分详解Map:输入一个元素,然后返回一个元素,中间可以做一些清洗转换等操作FlatMap:输入一个元素,可以返回零个,一个或者多个元素MapPartition\color{red}{MapPartition}MapPartition:类似map,一次处理一个分区的数据【如果在进行map处理的时候需要获取第三方资源链接,建议使用MapPa...原创 2019-06-01 22:03:46 · 1367 阅读 · 0 评论 -
【19】Flink 实战案例开发(一):数据清洗
1、应用场景分析数据清洗【实时ETL】数据报表1.1、数据清洗【实时ETL】1.1.1、需求分析针对算法产生的日志数据进行清洗拆分算法产生的日志数据是嵌套大JSON格式(json嵌套json),需要拆分打平针对算法中的国家字段进行大区转换最后把不同类型的日志数据分别进行存储1.1.2、架构图创建一个大的项目,用Maven来维护每个flink需求,即job创建一个...原创 2019-06-18 10:14:19 · 15048 阅读 · 4 评论