
Flink
文章平均质量分 79
B站Flink学习之旅
只是甲
10年及以上金融信贷、通信行业数据库运维管理、数据仓库及大数据相关工作经验,持有Oracle OCP和Linux RHCE认证证书。
展开
-
Flink案例系列2-提交到yarn集群报错java.lang.NoClassDefFoundError FlinkKafkaConsumer
文章目录一.问题描述二.解决方案2.1 代码的问题?2.2 maven依赖的问题2.3 手工上传jar包2.3.1 上传FlinkKafkaConsumer相关的jar包2.3.2 上传FlinkKafkaConsumerBase相关的jar包一.问题描述环境介绍:CDH 6.3.1集群Flink版本 1.9.0Kafka版本 2.12本地运行无问题,提交到yarn集群报错代码:package org.example;/* @author 只是甲 * @date 2021-原创 2021-11-16 12:09:28 · 4046 阅读 · 0 评论 -
Flink案例系列1-本地运行Flink报错java.lang.NoClassDefFoundError
文章目录一.问题描述二.解决方案一.问题描述环境介绍Flink版本 1.9.0Kafka版本 2.12代码:package org.example;/* @author 只是甲 * @date 2021-08-30 * @remark Flink Souce之Kafka */import org.apache.flink.api.common.serialization.SimpleStringSchema;import org.apache.flink.strea原创 2021-11-16 12:07:54 · 2967 阅读 · 0 评论 -
Flink项目系列6-订单支付实时监控
文章目录一.项目概述1.1 订单支付实时监控1.2 订单支付实时对账二. 代码2.1 pom文件配置2.2 POJO类2.3 订单支付超时监控-CEP2.4 订单支付超时监控-Without CEP2.5 支付账单核对2.6 账单核对-使用join参考:一.项目概述1.1 订单支付实时监控基本需求用户下单之后,应设置订单失效时间,以提高用户支付的意愿,并降 低系统风险用户下单后15分钟未支付,则输出监控信息解决思路利用 CEP 库进行事件流的模式匹配,并设定匹配的时间间隔也可以利用状态原创 2021-11-15 09:24:46 · 2376 阅读 · 0 评论 -
Flink项目系列5-恶意登录监控
文章目录一.项目概述二.代码2.1 pom文件配置2.2 POJO类2.3 恶意登陆监控 - KeyedProcessFunction2.4 恶意登陆监控 - CEP参考:一.项目概述基本需求用户在短时间内频繁登录失败,有程序恶意攻击的可能同一用户(可以是不同IP)在2秒内连续两次登录失败,需要报警解决思路将用户的登录失败行为存入 ListState,设定定时器2秒后触发,查看 ListState 中有几次失败登录更加精确的检测,可以使用 CEP 库实现事件流的模式匹配二.代码原创 2021-11-15 09:11:56 · 1506 阅读 · 0 评论 -
Flink项目系列4-市场营销商业指标统计分析
文章目录一. 项目概述二.代码2.1 pom文件配置2.2 POJO类2.3 自定义测试数据源2.4 分渠道统计2.5 不分渠道(总量)统计2.6 黑名单过滤参考:一. 项目概述 随着智能手机的普及,在如今的电商网站中已经有越来越多的用户来自移动端, 相比起传统浏览器的登录方式 ,手机 APP 成为了更多用户访问电商网站的首选 。对 于电商企业来说 ,一般会通过各种不同的渠道对自己的 APP 进行市场推广,而这些 渠道的统计数据(比如,不同网站上广告链接的点击量、 APP 下载量)就成了市场 营销的重原创 2021-11-12 15:05:51 · 1658 阅读 · 0 评论 -
Flink项目系列3-实时流量统计
文章目录一.项目概述1.1 模块创建和数据准备1.2 基于服务器 log 的热门页面浏览量统计二.pom文件配置三.代码3.1 POJO类3.2 热门页面3.3 页面访问量3.4 页面独立访问量3.5 布隆过滤器实现独立访问量参考:一.项目概述1.1 模块创建和数据准备 新建一个NetworkFlowAnalysis的package。 将 apache 服务器的日志文件 apache.log 复制到资源文件目录 src/main/resources下,我们将从这里读取数据。 当然, 我们原创 2021-11-12 14:55:24 · 2439 阅读 · 0 评论 -
Flink项目系列2-实时热门商品统计
文章目录一. 项目剖析二.pom文件配置三.代码3.1 POJO类3.2 热门商品-纯Java代码2.3 热门商品-Table API和Flink SQL实现2.4 将文件写入kafka参考:一. 项目剖析基本需求:统计近1小时内的热门商品,每5分钟更新一次热门度用浏览次数(“pv”)来衡量解决思路在所有用户行为数据中,过滤出浏览(“pv”)行为进行统计构建滑动窗口,窗口长度为1小时,滑动距离为5分钟按照商品Id进行分区设置时间窗口时间窗口(timeWindow)区间为左闭右开同原创 2021-11-11 11:14:18 · 1801 阅读 · 1 评论 -
Flink项目系列1-项目介绍
文章目录一. 电商的用户行为二. 项目主要模块三. 数据源解析四. 项目模块设计4.1 数据源解析4.2 项目模块参考:一. 电商的用户行为 电商平台中的用户行为频繁且较复杂,系统上线运行一段时间后,可以收集到大量的用户行为数据, 进而利用大数据技术进行深入挖掘和分析, 得到感兴趣的商 业指标并增强对风险的控制。 电商用户行为数据多样,整体可以分为用户行为习惯数据和业务行为数据两大类。用户的行为习惯数据包括了用户的登录方式、上线的时间点及时长、点击和浏 览页面、页面停留时间以及页面跳转等等, 我们原创 2021-11-11 10:51:40 · 1108 阅读 · 0 评论 -
Flink基础系列35-Flink CDC简介
文章目录一. Flink CDC介绍二.Flink CDC 实操2.1 MySQL配置2.2 pom文件2.3 Java代码2.4 测试结果参考:一. Flink CDC介绍 Flink在1.11版本中新增了CDC的特性,简称 改变数据捕获。名称来看有点乱,我们先从之前的数据架构来看CDC的内容。 以上是之前的mysql binlog日志处理流程,例如canal监听binlog把日志写入到kafka中。而Apache Flink实时消费Kakfa的数据实现mysql数据的同步或其他内容等。拆分来说原创 2021-11-10 09:43:49 · 1032 阅读 · 0 评论 -
Flink基础系列34-Flink CEP简介
文章目录一.什么是CEP二.CEP特点三. Pattern API3.1 个体模式(Individual Patterns)3.2 组合模式(Combining Patterns)3.3 模式组3.3.1 模式的检测3.3.2 匹配事件提取3.3.3 超时事件提取参考:一.什么是CEP复杂事件处理(Complex Event Processing,CEP)Flink CEP是在Flink中实现的复杂事件处理(CEP)库CEP允许在无休止的事件流中检测事件模式,让我们有机会掌握数据中重要的原创 2021-11-08 11:32:22 · 355 阅读 · 0 评论 -
Flink基础系列33-Table API和Flink SQL之函数
文章目录一. 函数1.1 系统内置函数1.2 UDF1.2.1 注册用户自定义函数 UDF1.2.2 标量函数(Scalar Functions)1.2.3 表函数(Table Functions)1.2.4 聚合函数(Aggregate Functions)1.2.5 表聚合函数(Table Aggregate Functions)二.案例2.1 Scalar Function2.2 Table Function2.3 Aggregate Function参考:一. 函数 Flink Table原创 2021-11-08 11:24:45 · 1424 阅读 · 0 评论 -
Flink基础系列32-Table API和Flink SQL之窗口
文章目录一.窗口1.1 分组窗口(Group Windows)1.1.1 滚动窗口1.1.2 滑动窗口1.1.3 会话窗口1.2 Over Windows1.3 SQL 中窗口的定义1.3.1 Group Windows1.3.2 Over Windows二.案例参考:一.窗口 时间语义,要配合窗口操作才能发挥作用。最主要的用途,当然就是开窗口、根据时间 段做计算了。下面我们就来看看 Table API 和 SQL 中,怎么利用时间字段做窗口操作。 在 Table API 和 SQL 中,主要有两原创 2021-11-05 09:07:15 · 523 阅读 · 0 评论 -
Flink基础系列31-Table API和Flink SQL之流处理中的特殊概念
文章目录一. 流处理中的特殊概念1.1 流处理和关系代数(表,及 SQL)的区别1.2 动态表(Dynamic Tables)1.3 流式持续查询的过程1.3.1 将流转换成表(Table)1.3.2 持续查询(Continuous Query)1.3.3 将动态表转换成流1.4 时间特性1.4.1 处理时间(Processing Time)1.4.1.1 DataStream 转化成 Table 时指定1.4.1.2 定义Table Schema时指定1.4.1.3 创建表的 DDL 中指定1.4.2 事原创 2021-11-05 08:59:31 · 546 阅读 · 0 评论 -
Flink基础系列30-Table API和Flink SQL之API调用
文章目录一.基本程序结构二.创建表环境三.在 Catalog 中注册表3.1 表(Table)的概念3.2 连接到文件系统(Csv 格式)3.3 连接到 Kafka四. 表的查询4.1 Table API 的调用4.2 SQL 查询五. 将DataStream 转换成表5.1 代码表达5.2 数据类型与 Table schema 的对应六. 创建临时视图(Temporary View)七. 输出表7.1 输出到文件7.2 更新模式(Update Mode)7.3 输出到 Kafka7.4 输出到 Elast原创 2021-11-04 09:26:52 · 642 阅读 · 0 评论 -
Flink基础系列29-Table API和Flink SQL之整体介绍
文章目录一.整体概述1.1 什么是 Table API 和 Flink SQL1.2 需要引入的pom依赖1.3 两种 planner(old & blink)的区别二.Table API和Flink SQL 测试样例参考:一.整体概述1.1 什么是 Table API 和 Flink SQL Flink本身是批流统一的处理框架,所以Table API和 SQL,就是批流统一的上层处理 API。目前 功能尚未完善 ,处于活跃的开发阶段。 Table API是一套内嵌在 一套内嵌在 一套内原创 2021-11-04 08:57:53 · 303 阅读 · 0 评论 -
Flink基础系列28-Flink容错机制
文章目录一. 一致性检查点(checkpoint)二. 从检查点恢复状态三. Flink检查点算法四. 保存点(Savepoints)五.检查点和重启策略配置六. 状态一致性6.1 概述6.2 分类6.3 一致性检查点(Checkpoints)七. Flink+Kafka 端到端状态一致性的保证参考:一. 一致性检查点(checkpoint)Flink 故障恢复机制的核心,就是应用状态的一致性检查点有状态流应用的一致检查点,其实就是所有任务的状态,在某个时间点的一份拷贝(一份快照);1)这原创 2021-11-03 08:58:36 · 509 阅读 · 0 评论 -
Flink基础系列27-ProcessFunction API(底层API)
文章目录概述:一. KeyedProcessFunction二. TimerService和定时器(Timers)三. 侧输出流(SideOutput)四. CoProcessFunction参考:概述:我们之前学习的转换算子是无法访问事件的时间戳信息和水位线信息的。而这在一些应用场景下,极为重要。例如MapFunction这样的map转换算子就无法访问时间戳或者当前事件的事件时间。基于此,DataStream API提供了一系列的Low-Level转换算子。可以访问时间戳、watermark以及注册原创 2021-11-03 08:46:47 · 260 阅读 · 0 评论 -
Flink基础系列26-Flink状态管理
文章目录一. 状态概述:二. 算子状态 Operator State2.1 概述2.2 算子状态数据结构2.3 代码测试三. 键控状态 Keyed State3.1 概述3.2 键控状态数据结构3.3 测试代码3.4 场景测试四. 状态后端 State Backends4.1 概述4.2 选择一个状态后端4.3 配置文件4.4 样例代码参考:一. 状态概述:Flink中的状态:算子状态(Operator State)键控状态(Keyed State)状态后端(State Backends)原创 2021-10-29 18:00:56 · 426 阅读 · 0 评论 -
Flink基础系列25-时间语义和Watermark
文章目录一.Flink中的时间语义二.EventTime的引入三. Watermark3.1 概念3.2 Watermark的特点3.3 Watermark的传递3.4 Watermark的引入3.5 Watermark的设定四. 测试代码4.1 测试Watermark和迟到数据4.2 分析4.2.1 计算窗口起始位置Start和结束位置End4.2.2 计算修正后的Window输出结果的时间4.3.3 为什么上面输入中,最后连续四条相同输入,才触发Window输出结果?3.7 窗口起始点和偏移量参考:一原创 2021-10-29 17:54:38 · 288 阅读 · 0 评论 -
Flink基础系列24-Flink的Window
文章目录一.Flink Window1.1 概述1.2 Window类型二.Flink Window API2.1 概述2.2 TimeWindow2.3 CountWindow2.4 window function2.5 其他可选API三.代码测试3.1 测试滚动时间窗口的增量聚合函数3.2 测试滚动时间窗口的全窗口函数2.3 测试滑动计数窗口的增量聚合函数3.4 其他可选API代码片段参考:一.Flink Window1.1 概述[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传原创 2021-10-28 15:29:03 · 4965 阅读 · 0 评论 -
Flink基础系列23-Sink之JDBC
文章目录一.Sink之JDBC概述二.pom文件配置三.MySQL配置四.编写Java代码五.运行Flink程序查看数据参考:一.Sink之JDBC概述Flink的Sink支持的数据库:Bahir中支持的数据库:从上两图可以看到,Flink的Sink并支持类似MySQL的这种关系型数据库,那么如果我需要通过Flink连接MySQL,该如何操作呢?这个时候我们可以使用Flink Sink的JDBC连接。二.pom文件配置此处,我本地MySQL版本是 8.0.19<!-- https:原创 2021-10-28 15:11:10 · 6120 阅读 · 0 评论 -
Flink基础系列22-Sink之Redis
文章目录一.pom.xml文件配置二.代码准备三.测试参考:一.pom.xml文件配置查看Flink 1.9.0版本的官方文档https://ci.apache.org/projects/flink/flink-docs-release-1.9/可以看到连接里面是没有Redis,不过Bahir中有参考官网提供的pom文件<dependency> <groupId>org.apache.bahir</groupId> <artifactId&g原创 2021-10-27 15:59:40 · 5083 阅读 · 0 评论 -
Flink基础系列21-Sink之Kafka
文章目录一.Sink概述二.Sink之Kafka2.1 将文本文件数据写入Kafka2.2 Java代码准备2.3 开启生产者2.4 查看Kafka输出参考:备注:Flink 1.9.0一.Sink概述Flink没有类似于spark中foreach方法,让用户进行迭代的操作。虽有对外的输出操作都要利用Sink完成。最后通过类似如下方式完成整个任务最终输出操作。官方提供了一部分的框架的sink。除此以外,需要用户自定义实现sink。二.Sink之Kafka2.1 将文本文件数据写入Kafka原创 2021-10-27 15:57:16 · 6704 阅读 · 0 评论 -
Flink基础系列20-数据重分区操作
文章目录一.数据重分区参考:一.数据重分区重分区操作,在DataStream类中可以看到很多Partitioner字眼的类。其中partitionCustom(…)方法用于自定义重分区。测试代码:package org.flink.transform;/** * @author 只是甲 * @date 2021-08-31 * @remark Flink 基础Transform 重分区 */import org.flink.beans.SensorReading;impor原创 2021-10-26 18:06:48 · 6486 阅读 · 0 评论 -
Flink基础系列19-实现UDF
文章目录一. 函数类(Function Classes)二. 匿名函数(Lambda Functions)三.富函数(Rich Functions)参考:一. 函数类(Function Classes)Flink暴露了所有UDF函数的接口(实现方式为接口或者抽象类)。例如MapFunction, FilterFunction, ProcessFunction等等。下面例子实现了FilterFunction接口:DataStream<String> flinkTweets = tweets原创 2021-10-26 18:04:19 · 6563 阅读 · 0 评论 -
Flink基础系列18-支持的数据类型
文章目录一.Flink支持的数据类型1.1 基础数据类型1.2 Java和Scala元组(Tuples)1.3 Scala样例类(case classes)1.4 Java简单对象(POJO)1.5 其他(Arrays, Lists, Maps, Enums,等等)参考:一.Flink支持的数据类型Flink流应用程序处理的是以数据对象表示的事件流。所以在Flink内部,我们需要能够处理这些对象。它们需要被序列化和反序列化,以便通过网络传送它们;或者从状态后端、检查点和保存点读取它们。为了有效地做到这一原创 2021-10-22 15:33:01 · 10427 阅读 · 0 评论 -
Flink基础系列17-Tranform之多流转换算子
文章目录一.多流转换算子概述1.1 Split和Select1.2 Connect和CoMap1.3 Union二.代码实现参考:一.多流转换算子概述多流转换算子一般包括:Split和Select (新版已经移除)Connect和CoMapUnion1.1 Split和Select注:新版Flink已经不存在Split和Select这两个API了(至少Flink1.12.1没有!)SplitDataStream -> SplitStream:根据某些特征把DataStream拆分成原创 2021-10-22 15:30:40 · 10310 阅读 · 0 评论 -
Flink基础系列16-Tranform之聚合操作算子
文章目录一.聚合操作算子简介1.1 KeyBy1.2 Rolling Aggregation1.3 reduce二.代码实现2.1 maxby2.2 reduce参考:一.聚合操作算子简介DataStream里没有reduce和sum这类聚合操作的方法,因为Flink设计中,所有数据必须先分组才能做聚合操作。先keyBy得到KeyedStream,然后调用其reduce、sum等聚合操作方法。(先分组后聚合)常见的聚合操作算子主要有:keyBy滚动聚合算子Rolling Aggregation原创 2021-10-21 10:41:07 · 10834 阅读 · 0 评论 -
Flink基础系列15-Tranform之基本转换算子(map/flatMap/filter)
文章目录一.转换算子1.1 map1.2 flatMap1.3 Filter二.代码参考:一.转换算子1.1 map从如下图解可以看到,map是一对一的操作,对dataStream中的计算,一对一输出DataStream<Integer> mapStram = dataStream.map(new MapFunction<String, Integer>() { public Integer map(String value) throws Exce原创 2021-10-21 10:31:27 · 10525 阅读 · 0 评论 -
Flink基础系列14-Source之自定义Source
文章目录一.代码准备二.运行程序参考:一.代码准备org.flink.beans.SensorReadingpackage org.flink.beans;/** * @author 只是甲 * @date 2021-08-30 * @remark 传感器温度读数的数据类型 */public class SensorReading { // 属性:id,时间戳,温度值 private String id; private Long timestamp;原创 2021-10-20 15:00:18 · 10328 阅读 · 0 评论 -
Flink基础系列13-Source之从Kafka读取
文章目录一.环境介绍二.代码三.打包代码并执行参考:一.环境介绍环境介绍本地测试环境搭建了CDH 6.3集群,集成了Kafka和FlinkMaven配置从官网找到的maven配置如下:<dependency> <groupId>org.apache.flink</groupId> <artifactId>flink-connector-kafka_2.11</artifactId> <version>1.9.0原创 2021-10-20 14:58:24 · 10396 阅读 · 0 评论 -
Flink基础系列12-Source之从文件读取
文章目录一.文件准备二.程序准备三.运行Flink程序参考:一.文件准备sensor.txtsensor_1 1547718199 35.8sensor_6 1547718201, 15.4sensor_7 1547718202, 6.7sensor_10 1547718205 38.1将文件上传到hdfshadoop fs -copyFromLocal sensor.txt /user/hive/warehouse二.程序准备SourceTest2_Filepackage org原创 2021-10-19 11:22:43 · 11671 阅读 · 0 评论 -
Flink基础系列11-Source之从集合读取数据
文章目录一. 代码准备二.运行flink程序参考:一. 代码准备org.flink.beans.SensorReadingpackage org.flink.beans;/** * @author 只是甲 * @date 2021-08-30 * @remark 传感器温度读数的数据类型 */public class SensorReading { // 属性:id,时间戳,温度值 private String id; private Long timest原创 2021-10-19 11:20:34 · 11629 阅读 · 0 评论 -
Flink基础系列10-Flink Environment
文章目录一.Environment概述1.1 getExecutionEnvironment1.2 createLocalEnvironment1.3 createRemoteEnvironment参考:一.Environment概述一个Flink的程序是从一个Environment开始的1.1 getExecutionEnvironment创建一个执行环境,表示当前执行程序的上下文。如果程序是独立调用的,则此方法返回本地执行环境;如果从命令行客户端调用程序以提交到集群,则此方法返回此集群的执行环原创 2021-10-18 16:43:03 · 11848 阅读 · 0 评论 -
Flink基础系列9-Flink运行架构
文章目录一.Flink运行的四大组件1,1 作业管理器(JobManager)1.2 任务管理器(TaskManager)1.3 资源管理器(ResourceManager)1.4 分发器(Dispatcher)二.任务提交流程2.1 非yarn模式的任务提交流程2.2 任务提交流程(YARN)三. 任务调度原理四. TaskManger与Slots与parallelism五. 程序与数据流六. 执行图(ExecutionGraph)七. 数据传输形式参考:一.Flink运行的四大组件如下图所示,Fli原创 2021-10-18 16:39:12 · 12284 阅读 · 0 评论 -
Flink基础系列8-Flink on yarn运行wordcount程序
文章目录环境介绍一.Maven配置二.Java代码编写三.Maven打包并上传四.运行jar文件五.运行其它的class文件参考环境介绍测试服务器CDH 6.3.1版本安装Flink 1.9版本。hello.txt文件hello wordhello hdfshello mapreducehello yarnhello hivehello sparkhello flink一.Maven配置Flink依赖的配置<dependency> <groupId&原创 2021-10-15 10:27:21 · 12232 阅读 · 0 评论 -
Flink基础系列7-通过Web UI执行jar文件
文章目录环境准备一.准备代码1.1 maven准备1.2 Java代码准备二.打包三.通过Web UI执行jar文件3.1 上传文件环境准备本地Windows环境已安装Flink 1.9.0版本。一.准备代码1.1 maven准备配置Flink的依赖<dependency> <groupId>org.apache.flink</groupId> <artifactId>flink-java</artifactId>原创 2021-10-15 10:24:55 · 12947 阅读 · 1 评论 -
Flink基础系列6-flink run参数
执行 flink run 后参数:参数说明Action "run" compiles and runs a program.Syntax: run [OPTIONS] <jar-file> <arguments>"run" action options: -c,--class <classname> Class with the program entry原创 2021-10-14 14:20:39 · 18447 阅读 · 0 评论 -
Flink基础系列5-Flink 配置文件参数
文章目录一.Flink配置文件概述1.1 基础配置1.2 高可用性配置1.3 容错和检查点 配置1.4 web 前端配置1.5 高级配置1.6 Flink 集群安全配置1.7 Zookeeper 安全配置1.8 HistoryServer1.9 masters1.10 slaves1.11 zoo.cfg1.12 日志配置1.13 sql-client-defaults.yaml参考:一.Flink配置文件概述安装目录下主要有 flink-conf.yaml 配置、日志的配置文件、zk 配置、Flink原创 2021-10-14 14:18:57 · 16781 阅读 · 0 评论 -
Flink基础系列4-CDH6.3集成Flink1.9
文章目录一.准备工作1.1 CDH 6.3.1大数据平台搭建1.2 安装方式讨论1.3 安装介质下载及上传1.3.1 介质下载1.3.2 上传文件1.4 重启cdh集群二.安装Flink2.1 配置本地Flink 的 parcel2.2 开始安装Flink三.FAQ3.1 Deploy client Configuration失败3.2 为激活 Parcel:[flink]参考:一.准备工作1.1 CDH 6.3.1大数据平台搭建CDH 6.3 大数据平台搭建1.2 安装方式讨论CDH本身不自带F原创 2021-10-13 15:17:37 · 16823 阅读 · 0 评论