Flink
文章平均质量分 64
hzp666
这个作者很懒,什么都没留下…
展开
-
flink实时数据问题记录解决
数据倾斜无论是在离线还是实时中都会遇到,其定义是:在并行进行数据处理的时候,按照某些key划分的数据显著多余其他部分,分布不均匀,导致大量数据集中分布到一台或者某几台计算节点上,使得该部分的处理速度远低于平均计算速度,成为整个数据集处理的瓶颈,从而影响整体计算性能。造成数据倾斜的原因有很多种,如group by时的key分布不均匀,空值过多、count distinct等,本文将只介绍group by + count distinct这种情况。▐ 背景。转载 2024-07-04 17:12:04 · 171 阅读 · 0 评论 -
flink学习46:flinkSQL自定义函数
实例:原创 2023-05-10 16:08:52 · 177 阅读 · 0 评论 -
flink学习45:flinkSQL
支持的函数select查询过滤聚合操作连接操作集合操作intersect & exceptinexistsorder bylimit原创 2023-05-10 15:20:49 · 92 阅读 · 0 评论 -
flink学习44:基于行的操作分组和窗口的聚合
原创 2023-05-10 15:05:39 · 105 阅读 · 0 评论 -
flink学习43:基于行的操作map、flatmap、聚合
MapFlatMap聚合原创 2023-05-10 14:50:46 · 204 阅读 · 0 评论 -
flink学习42:tableAPI的join、union、排序、插入操作
连接内连接外连接集合操作 union获取交集获取差集in 操作排序操作插入操作原创 2023-05-10 14:39:42 · 150 阅读 · 0 评论 -
flink学习41:tableAPI的聚合操作
实例:验证:原创 2023-05-10 11:08:39 · 76 阅读 · 0 评论 -
flink学习40:tableAPI的扫描、投影、过滤、列操作
from用法select用法as用法where用法filter用法列操作增删改原创 2023-05-10 10:55:05 · 118 阅读 · 0 评论 -
flink学习39:tableAPI应用实例
实例。原创 2023-05-10 10:43:48 · 96 阅读 · 0 评论 -
flink学习38:tableAPI和flinsql的时间概念
这里以第2种,dataStream为例: 这里以第2个为例:原创 2023-05-10 10:38:31 · 80 阅读 · 0 评论 -
flink学习37:DataStream/DataSet与Table的互相转换
表转换为DataStream/DataSet时,需要指定字段数据类型,最方便的就是把数据类型定为row,即行数据。原创 2023-05-10 10:28:40 · 1271 阅读 · 0 评论 -
idea运行Scala程序报错
删除project structure下Libraries中的Scala SDK后关闭IDEA,重新打开,检查pom.xml文件中Scala的版本,重新导入Scala SDK。转载 2023-05-09 11:04:03 · 1032 阅读 · 0 评论 -
flink学习35:flinkSQL查询mysql
import org.apache.flink.streaming.api.scala.StreamExecutionEnvironmentimport org.apache.flink.table.api.EnvironmentSettingsimport org.apache.flink.table.api.bridge.scala.{StreamTableEnvironment, tableConversions}object sqlQueryTable { def main(args: Ar原创 2023-02-02 09:23:26 · 1846 阅读 · 0 评论 -
Flink学习32:注册表的表格式、表模式、更新方式
<!-- csv--> <dependency> <groupId>org.apache.flink</groupId> <artifactId>flink-csv</artifactId> <version>1.14.4</version> </dependency>表模式原创 2023-02-02 09:15:05 · 160 阅读 · 0 评论 -
flink学习34:flinkSQL保存kafka数据到mysql(待续)
build()"""|(|)with(|)//print//execute。原创 2023-02-01 13:43:00 · 907 阅读 · 0 评论 -
flink学习33:flinkSQL连接mysql,查询插入数据
1.生成运行时env2.生成表环境3.接上数据流,数据流数据生成表4.把数据库中sink保存数据的表,在flink中生成一遍(相当于把flink生成的表,绑定到数据库中的表),配上数据库连接信息,并执行,及注册5.查询表,可以根据注册表名查询6.插入表,可以根据生成的flink表进行数据插入。原创 2023-01-30 10:24:31 · 7577 阅读 · 3 评论 -
flink-table-planner-blink
3 人赞同了该文章Apache Flink提供了两种顶层的关系型API,分别为Table API和SQL,Flink通过Table API&SQL实现了批流统一。其中Table API是用于Scala和Java的语言集成查询API,它允许以非常直观的方式组合关系运算符(例如select,where和join)的查询。Flink SQL基于Apache Calcite 实现了标准的SQL,用户可以使用标准的SQL处理数据集。转载 2023-01-12 11:19:46 · 2939 阅读 · 0 评论 -
Flink学习31:Table API & SQL之注册表
flink SQL是最上层的封装,封装了流处理的DataStream API 和 批处理的DataSet API。但是DataStream API 、DataSet API、table API、flink SQL 这几层并没有分到不同层中,所以应用程序可以同时使用这几层。 ps:jar包名 也会随flink版本变化:flink-table-planner_2.12,去掉了blink字符 <!--Flink scala项目核心依赖--> <原创 2023-01-10 10:52:22 · 758 阅读 · 0 评论 -
Flink学习30:状态编程
在离线的批处理的作业中,往往都是对数据进行切片计算,最后再把结果聚合,所以对数据状态要求不高。比较好理解,就是流中的事件相互独立,流只看最后到达的数据状态,作为最新状态。比如:水库水位只接收传感器最后的水位高度,作为最后状态。但是实时流数据中数据状态就很重要了。而不考虑之前到达的数据的情况。原创 2023-01-10 09:38:52 · 165 阅读 · 0 评论 -
Flink学习29:延迟数据处理
为了处理某些延迟数据,在水位线关闭后才到达,导致延迟数据被删除的问题。原创 2023-01-09 14:45:04 · 273 阅读 · 0 评论 -
flink的水位线详解
水位线在事件时间的世界里面,承担了时钟的角色。也就是说在事件时间的流中,水位线是唯一的时间尺度。如果想要知道现在几点,就要看水位线的大小。后面讲到的窗口的闭合,以及定时器的触发都要通过判断水位线的大小来决定是否触发。水位线是一种特殊的事件,由程序员通过编程插入的数据流里面,然后跟随数据流向下游流动。水位线的默认计算公式:水位线 = 观察到的最大事件时间 – 最大延迟时间 – 1 毫秒。所以这里涉及到一个问题,就是不同的算子看到的水位线的大小可能是不一样的。转载 2022-12-28 16:16:10 · 608 阅读 · 0 评论 -
Flink学习28:水位线
flink有3种时间水位线主要解决,数据乱序到达或者延迟到达的问题。原创 2022-12-27 18:43:57 · 1374 阅读 · 0 评论 -
Flink学习27:驱逐器
/env})}//}}}}}})}}}原创 2022-12-26 16:17:11 · 591 阅读 · 0 评论 -
flink水位线简介
在进行窗口处理时,不可能无限期的等待延迟数据到达,当到达特定watermark时,认为在watermark之前的数据已经全部达到(即使后面还有延迟的数据), 可以触发窗口计算,这个机制就是 Watermark(水位线),具体如下图所示。如果水位线设置的过于宽松,好处是计算时能保证近可能多的数据被收集到,但由于此时的水位线远落后于处理记录的时间戳,导致产生的数据结果延迟较大。如果设置的水位线过于紧迫,数据结果的时效性当然会更好,但由于水位线大于部分记录的时间戳,数据的完整性就会打折扣。转载 2022-12-26 14:50:21 · 720 阅读 · 0 评论 -
flink kafka offset配置
1.2、如果分区中offset没有找到,则使用kafka properties中的auto.offset.reset配置(比如:latest、earliest)配置:enable.auto.commit / auto.commit.interval.ms。从最早的记录开始,使用此配置,在kafka中已经提交的offset将被忽略,不会被使用。从最新的开始,使用此配置,在kafka中已经提交的offset将被忽略,不会被使用。flink kafka消费依赖于内部kafka客户端自动定期的offset提交。转载 2022-12-22 10:51:10 · 1415 阅读 · 0 评论 -
flink中idea配置pom.xml
-Flink 本地测试wei ui依赖 http://127.0.0.1:8081/ -->--Flink Table API 核心依赖-->--这里没引打包插件 需要的自己引用-->--Flink rocksdb状态后依赖 -->--Flink Java 项目核心依赖-->--Flink scala项目核心依赖-->--Flink 本地测试客户端依赖-->--Flink Kafka依赖-->--junit测试-->--Flink项目核心依赖-->--以下用到什么引用什么-->--本地测试核心依赖-->原创 2022-12-09 16:39:03 · 1675 阅读 · 0 评论 -
Flink学习26:触发器
示例1:当流中元素达到5个以后,触发窗口计算。原创 2022-12-09 09:31:26 · 945 阅读 · 0 评论 -
flink接入Kafka报错:timeout expired while fetching topic metadata
简单的flink接入kafka结果报错:---------------------------————————————————————————————————————————//create envval env = StreamExecutionEnvironment.getExecutionEnvironment//set parallelismenv.setParallelism(1)//set process timeenv.setStreamTimeCharacteristic(Tim原创 2022-12-08 14:53:32 · 2084 阅读 · 0 评论 -
Flink学习25:窗口计算函数
重写3个方法:createAccumulator(生成累加器)、 add(编辑累加逻辑)、getResult(编辑输出结果)、merge(编辑累加器合并逻辑)原创 2022-09-20 11:15:22 · 772 阅读 · 0 评论 -
Flink学习24:窗口的分配器
处理时间事件时间滚动窗口方法一:.sum(1)第二步第1步:第2步:.sum(1)滑动窗口。原创 2022-09-05 16:03:29 · 588 阅读 · 0 评论 -
Flink学习24.1:事件时间处理和水印
在 Flink 的流式处理中,会涉及到时间的不同概念,如下图所示Event Time:是事件创建的时间。它通常由事件中的描述,例如采集的日志数据中,每一条日志都会记录自己的生成时间,Flink 通过时间戳分配器访问事件时间戳。Ingestion Time:是数据进入 Flink 的时间。Time:是每一个执行基于时间操作的算子的本地系统时间,与机器相关,默认的时间属性就是 Processing Time。转载 2022-09-02 14:02:48 · 691 阅读 · 0 评论 -
Flink23:窗口计算程序的结构
窗口操作是flink程序的核心。通过窗口将无限的数据流切分成有限的窗口操作。原创 2022-08-31 10:35:03 · 560 阅读 · 0 评论 -
Flink学习22:窗口的划分
主要有2种窗口,一个基于时间窗口,一个是基于数据窗口。时间窗口中起止时间是,左闭右开。原创 2022-08-31 09:39:26 · 898 阅读 · 0 评论 -
Flink学习21:数据输出sink
/sink}}//sink}}原创 2022-08-16 11:01:24 · 445 阅读 · 0 评论 -
Flink学习20:聚合算子(sum,max,min)
常见的聚合算子 sum,max,min等聚合算子可以在在keyedStream 流上进行滚动的聚合(即累计的操作),而且同一个 keyedStream 流上只能调用一次 聚合算子。原创 2022-08-12 09:48:46 · 3212 阅读 · 1 评论 -
Flink学习20:算子介绍reduce
1.继承 ReduceFunction 类2.重写reduce 方法。原创 2022-08-10 16:56:08 · 717 阅读 · 0 评论 -
Flink学习19:算子介绍keyBy
主要作用:把相同的数据,汇总到相同的分区中。原创 2022-08-10 16:13:14 · 4123 阅读 · 0 评论 -
Flink学习18:算子介绍filter
}原创 2022-08-10 15:11:28 · 530 阅读 · 0 评论 -
Flink学习17:算子介绍flatMap
1.将数据切分2.拍扁 示例:输出结果:import org.apache.flink.api.scala.createTypeInformationimport org.apache.flink.streaming.api.scala.StreamExecutionEnvironmentobject flatMapTest { def main(args: Array[String]): Unit = { //create env val env = StreamEx原创 2022-08-10 14:45:08 · 2950 阅读 · 0 评论 -
Flink学习16:算子介绍map
示例:import org.apache.flink.streaming.api.scala.StreamExecutionEnvironmentimport org.apache.flink.streaming.api.scala._object mapTest { def main(args: Array[String]): Unit = { //create env val env = StreamExecutionEnvironment.getExecutionEnvi原创 2022-08-10 10:50:25 · 534 阅读 · 1 评论