![](https://img-blog.csdnimg.cn/20201014180756928.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
flink
文章平均质量分 75
大数据面壁者
大数据相关知识分享,框架底层原理机制,生产学习中遇到的相关问题分享,共同学习,共同进步。
展开
-
使用flinksql读取parquent文件
使用flinksql读取parquent文件一、导入maven依赖 <dependency> <groupId>org.apache.flink</groupId> <artifactId>flink-parquet_2.12</artifactId> <version>1.11</version> </dependency>二、创建flink动态表关联文件p原创 2021-06-08 20:47:06 · 1500 阅读 · 2 评论 -
Flink流处理查询外部数据源的解决方法
Flink流处理查询外部数据源的解决方法在流处理中,常涉及到与外部数据源的交互。例如在实时数仓的设计中通常是流式采集用户的浏览、下单等行为,但是用户信息,SKU、SPU等信息因为是维度表不适合通过流的方式读取(流中无法进行随意消费),而是存储在外部数据库例如Hbase、ClieckHouse的实时性能比较高的分布式数据库中。但是与外部数据源的查询常常是流式计算的瓶颈,下面给出了两种优化方案:旁路缓存技术和Flink提供的异步查询方式。方案1: 加入旁路缓存模式 (cache-aside-pattern)原创 2021-03-19 20:43:13 · 1897 阅读 · 1 评论 -
布隆过滤器
布隆过滤器目录布隆过滤器为什么需要布隆过滤器基本概念实现原理优点缺点使用场景假阳性概率的计算为什么需要布隆过滤器如果想判断一个元素是不是在一个集合里,一般想到的是将集合中所有元素保存起来,然后通过比较确定。链表、树、散列表(又叫哈希表,Hash table)等等数据结构都是这种思路。但是随着集合中元素的增加,我们需要的存储空间越来越大。同时检索速度也越来越慢,上述三种结构的检索时间复杂度分别为布隆过滤器即可以解决存储空间的问题, 又可以解决时间复杂度的问题.布隆过滤器的原理是,当一个元素被加入集原创 2021-03-13 00:02:39 · 501 阅读 · 0 评论 -
Flink海量数据实时去重
Flink海量数据实时去重方案1: 借助redis的Set具体实现代码缺点需要频繁连接Redis如果数据量过大, 对redis的内存也是一种压力方案2: 使用Flink的MapState具体实现代码缺点如果数据量过大, 状态后端最好选择 RocksDBStateBackend如果数据量过大, 对存储也有一定压力方案3: 使用布隆过滤器布隆过滤器可以大大减少存储的数据的数据量优点不需要存储数据本身,只用比特表示,因此空间占用相对于传统方式有巨大的优势,并且能够保密数据;原创 2021-03-12 23:52:19 · 3238 阅读 · 1 评论 -
Flink双流join
Flink双流join目录Flink双流join1. Window Join滚动窗口Join滑动窗口Join会话窗口Join2. Interval Join在Flink中, 支持两种方式的流的Join: Window Join和Interval Join1. Window Join窗口join会join具有相同的key并且处于同一个窗口中的两个流的元素.注意:所有的窗口join都是inner join, 意味着a流中的元素如果在b流中没有对应的, 则a流中这个元素就不会处理(就是忽略掉了)原创 2021-03-12 23:46:48 · 897 阅读 · 0 评论 -
使用FlinkSql实现热门商品TOP N
使用FlinkSql实现热门商品TOP N目前仅 Blink 计划器支持 Top-N 。Flink 使用OVER 窗口条件和过滤条件相结合以进行 Top-N 查询。利用 OVER 窗口的 PARTITION BY 子句的功能,Flink 还支持逐组 Top-N 。 例如,每个类别中实时销量最高的前五种产品。批处理表和流处理表都支持基于SQL的 Top-N 查询。流处理模式需注意: TopN 查询的结果会带有更新。 Flink SQL 会根据排序键对输入的流进行排序;若 top N 的记录发生了变化,原创 2021-03-12 23:40:11 · 1251 阅读 · 0 评论 -
Flink的SqlClient工具
SqlClient启动换一个yarn-session,bin/yarn-session -d然后启动一个sql客户端.bin/sql-client.sh embedded建立到Kafka的连接下面创建一个流表从Kafka读取数据copy 依赖到 flink的lib 目录下 flink-sql-connector-kafka_2.11-1.12.0.jar 下载地址: https://repo.maven.apache.org/maven2/org/apache/flink/flink-原创 2021-03-12 23:09:37 · 902 阅读 · 1 评论 -
SparkSql使用Catalog连接Hive
SparkSql使用Catalog连接Hive目录SparkSql使用Catalog连接Hive一、Catalog二、Catalog类型三、HiveCatalog连接Hive获取数据一、CatalogCatalog 提供了元数据信息,例如数据库、表、分区、视图以及数据库或其他外部系统中存储的函数和信息。数据处理最关键的方面之一是管理元数据。 元数据可以是临时的,例如临时表、或者通过 TableEnvironment 注册的 UDF。 元数据也可以是持久化的,例如 Hive Metastore 中的元原创 2021-03-12 23:05:06 · 1907 阅读 · 3 评论 -
FlinkSql中窗口(window)的使用
FlinkSql中窗口(window)的使用时间语义,要配合窗口操作才能发挥作用。最主要的用途,当然就是开窗口然后根据时间段做计算了。在Table API和SQL中,主要有两种窗口:Group Windows和Over Windows一、Table API中使用窗口Group Windows分组窗口(Group Windows)会根据时间或行计数间隔,将行聚合到有限的组(Group)中,并对每个组的数据执行一次聚合函数。Table API中的Group Windows都是使用.window(w:原创 2021-03-12 22:59:33 · 4197 阅读 · 0 评论 -
Flink SQL编程
Flink SQL编程目录Flink SQL编程一、Flink SQL核心概念1.1 动态表和连续查询1.2 在流上定义表(动态表)二、Flink Table API2.1 导入需要的依赖2.2 基本使用:表与DataStream的混合使用2.3 基本使用:聚合操作2.4 表到流的转换Append-only 流Retract 流Upsert 流2.5 通过Connector声明读入数据File sourceKafka Source2.6 通过Connector声明写出数据File SinkKafka原创 2021-03-10 23:55:08 · 838 阅读 · 0 评论 -
Flink CEP模式匹配编程
Flink CEP编程目录Flink CEP编程一、什么是FlinkCEP二、Flink CEP应用场景三、CEP开发基本步骤3.1 导入CEP相关依赖3.2 基本使用四、模式API4.1 单个模式单例模式循环模式条件4.2 组合模式(模式序列)严格连续松散连续非确定的松散连续4.3 模式知识补充循环模式的连续性循环模式的贪婪性模式可选性4.4 模式组4.5 超时数据4.6 匹配后跳过策略一、什么是FlinkCEPFlinkCEP(Complex event processing for Flink原创 2021-03-09 22:25:58 · 1000 阅读 · 0 评论 -
Flink流处理高阶编程实战
Flink流处理高阶编程实战一、基于埋点日志数据的网络流量统计1.1 指定时间范围内网站总浏览量(PV)的统计实现一个网站总浏览量的统计。我们可以设置滚动时间窗口,实时统计每小时内的网站PV。此前我们已经完成了该需求的流数据操作,当前需求是在之前的基础上增加了窗口信息public class P01_PV { public static void main(String[] args) { StreamExecutionEnvironment env = StreamEx原创 2021-03-09 21:30:02 · 294 阅读 · 0 评论 -
Flink的容错机制
Flink的容错机制目录Flink的容错机制一、状态的一致性一致性级别端到端的状态一致性二、Checkpoint原理三、Savepoint原理四、checkpoint和savepoint的区别五、Kafka+Flink+Kafka 实现端到端严格一次六、在代码中测试Checkpoint一、状态的一致性当在分布式系统中引入状态时,自然也引入了一致性问题。一致性实际上是"正确性级别"的另一种说法,也就是说在成功处理故障并恢复之后得到的结果,与没有发生任何故障时得到的结果相比,前者到底有多正确?举例来说,原创 2021-03-08 23:44:51 · 1389 阅读 · 0 评论 -
Flink状态管理及状态后端配置
Flink状态编程目录Flink状态编程1. 什么是状态2. 为什么需要管理状态3. Flink中的状态分类4. Managed State的分类5. 算子状态的使用案例1: 列表状态案例2: 广播状态6. 键控状态的使用案例1: ValueState案例2: ListState案例3: ReducingState案例4: AggregatingState案例5:MapState7. 状态后端状态后端的分类配置状态后端有状态的计算是流处理框架要实现的重要功能,因为稍复杂的流处理场景都需要记录状原创 2021-03-07 13:17:39 · 805 阅读 · 0 评论 -
Flink中定时器的使用
定时器基于处理时间或者事件时间处理过一个元素之后, 注册一个定时器, 然后指定的时间执行.Context和OnTimerContext所持有的TimerService对象拥有以下方法:currentProcessingTime(): Long 返回当前处理时间currentWatermark(): Long 返回当前watermark的时间戳registerProcessingTimeTimer(timestamp: Long): Unit 会注册当前key的processing time的定时原创 2021-03-07 10:45:28 · 3501 阅读 · 0 评论 -
Flink中处理乱序数据的三种方式
Flink中处理乱序数据的三种方式加水印Flink中的时间语意WaterMark,以事件时间减去所允许的最大乱序时间作为水印,原理相当于多给了数据一定的时间,然后关闭窗口,触发计算。允许迟到allowedLateness原理是在水印的基础上在多给数据一定的可以迟到的时间,当水印到达窗口大小时触发计算,但是不关闭窗口,到达所允许的迟到时间后真正关闭窗口。侧输出流当数据迟到的时间非常久,前两种都失效时使用,相当于迟到数据归放入一个分支流中进行单独计算。此外,侧输出流还可以对数据进行分流原创 2021-03-06 23:58:47 · 2311 阅读 · 0 评论 -
Flink流处理(开窗、水印、侧输出流)
Flink流处理高阶编程目录Flink流处理高阶编程一、Flink的window机制1.1 窗口概述1.2 窗口的分类1.2.1 基于时间的窗口1.2.2 基于元素个数的窗口1.3 Window Function二、Keyed vs Non-Keyed Windows三、Flik中的时间语义与WaterMark3.1 Flink中的时间语义3.1.1 处理时间(process time)3.1.2 事件时间(event time)3.2 哪种时间更重要3.3 Flink中的WaterMar原创 2021-03-05 21:28:26 · 2902 阅读 · 0 评论 -
Flink流处理核心编程实战
Flink流处理核心编程实战一、基于埋点日志数据的网络流量统计1.1 网站总浏览量(PV)的统计衡量网站流量一个最简单的指标,就是网站的页面浏览量(Page View,PV)。用户每次打开一个页面便记录1次PV,多次打开同一页面则浏览量累计。一般来说,PV与来访者的数量成正比,但是PV并不直接决定页面的真实来访者数量,如同一个来访者通过不断的刷新页面,也可以制造出非常高的PV。接下来我们就用咱们之前学习的Flink算子来实现PV的统计用于封装数据的JavaBean类import lombok.原创 2021-03-04 14:25:00 · 333 阅读 · 1 评论 -
Flink流处理核心编程
Flink流处理核心编程和其他所有的计算框架一样,Llink也有一些基础的开发步骤以及基础,核心的API,从开发步骤的角度来讲,主要分为四大部分一、EnvironmentFlink Job在提交执行计算时,需要首先建立和Flink框架之间的联系,也就指的是当前的flink运行环境,只有获取了环境信息,才能将task调度到不同的taskManager执行。而这个环境对象的获取方式相对比较简单// 批处理环境ExecutionEnvironment benv = ExecutionEnvironm原创 2021-03-02 21:00:05 · 231 阅读 · 0 评论 -
Flink运行架构
Flink运行架构目录Flink运行架构一、运行架构1.1 客户端1.2 JobManager1.2.1 ResourceManager1.2.2 Dispatcher1.2.3 JobMaster1.3 TaskManager二、核心概念2.1 TaskManager与Slots2.2 Parallelism(并行度)2.3 Task与SubTask2.4 Operator Chains(任务链)2.5 ExecutionGraph(执行图)三、提交流程3.1 高级视角提交流程(通用原创 2021-03-02 20:21:15 · 230 阅读 · 0 评论 -
Flink安装部署
Flink安装部署目录Flink安装部署一、开发模式二、local-cluster模式2.1local-cluster模式配置2.2在local-cluster模式下运行无界的WordCount三、Standalone模式3.1Standalone模式配置3.2 Standalone模式运行无界流WorkCount3.3Standalone高可用(HA)四、Yarn模式4.1Yarn模式配置4.2Yarn运行无界流WordCount4.3Flink on Yarn的3种部署模式4.4 Per-Job-Cl原创 2021-03-01 21:10:08 · 6263 阅读 · 0 评论 -
Flink的有界流和无界流
Flink的两个小Demo一、创建maven项目POM文件中添加需要的依赖:<properties> <flink.version>1.12.0</flink.version> <java.version>1.8</java.version> <scala.binary.version>2.11</scala.binary.version> <slf4j.version>1.原创 2021-03-01 20:49:53 · 568 阅读 · 0 评论 -
Flink简介及相关概念
Flink简介及相关概念一、初识FlinkFlink起源于Stratosphere项目,Stratosphere是在2010~2014年由3所地处柏林的大学和欧洲的一些其他的大学共同进行的研究项目,2014年4月Stratosphere的代码被复制并捐赠给了Apache软件基金会,参加这个孵化项目的初始成员是Stratosphere系统的核心开发人员,2014年12月,Flink一跃成为Apache软件基金会的顶级项目。在德语中,Flink一词表示快速和灵巧,项目采用一只松鼠的彩色图案作为logo,这原创 2021-03-01 20:44:21 · 392 阅读 · 0 评论 -
尝试使用lambda简化flink代码报错
SingleOutputStreamOperator<String> wordStream = lineStream.flatMap( (value, out) -> { for (String s : value.split(" ")) { out.collect(s); } }) ;Exception in thread "main" org.apache.flink.api.comm.原创 2021-03-01 20:14:21 · 326 阅读 · 0 评论