- 博客(151)
- 资源 (12)
- 收藏
- 关注

原创 flink实战--metrics监控与rest api
Flink metrics简介 Flink的metrics是Flink公开的一个度量系统,允许收集flink程序的公开指标到外部系统,我们也可以自定义指标通过metric收集,实际开发时经常需要查看当前程序的运行状况,flink 提供了 UI 界面,有比较详细的统计信息。但是 UI 界面也有不完善的地方,比如想要获取 flink 的实时吞吐。本文将详细介绍如何通过metric......
2019-05-24 17:39:13
15585
7

原创 flink实战--读写Hbase
简介 在Flink文档中,提供connector读取源数据和把处理结果存储到外部系统中。但是没有提供数据库的connector,如果要读写数据库,官网给出了异步IO(Asynchronous I/O)专门用于访问外部数据,详细可看:https://ci.apache.org/projects/flink/flink-docs-release-1.6/dev/stream/o...
2019-01-18 19:07:18
8251
35

原创 flink实战--flink集群的搭建与部署
flink实战案例一:flink集群的搭建与部署1.下载Flink压缩包下载地址:http://flink.apache.org/downloads.html根据集群环境的情况下载相应的版本的flink压缩包hadoop2.6,Scala2.11,所以下载:flink-1.5.0-bin-hadoop26-scala_2.11.tgz解压tar -zxf flink-1.5.0-bi...
2019-01-17 16:44:09
14928

原创 spark将数据写入ES(ElasticSearch)终极总结
简介spark接入ES可以使用多种方式,常见类型如下。将Map对象写入ElasticSearch 将case class 类对象写入ElasticSearch 将Json的字符串写入ElasticSearch本文主要介绍将case class 类对象写入ElasticSearch:也就是获取数据然后使用case class封装数据,然后在case class中选取一个字段当做 id,...
2019-01-09 13:11:47
31661
19

原创 flink实战--水印(watermark)终极总结
水印(waterMark) 了解水印前需要了解事件时间(eventTime)和处理时间(processTime)的概念,参考博客:https://blog.csdn.net/aA518189/article/details/82908993了解事件时间。 Flink通过水印来推进事件时间。水印是嵌入在流中的常规记录。计算程...
2018-12-24 15:12:23
7689
2

原创 flink实战--flinkSQL入门大全
FlinkSQL概念介绍Table API & SQL Apache Flink具有两个关系API - 表API和SQL - 用于统一流和批处理。Table API是Scala和Java的语言集成查询API,允许以非常直观的方式组合来自关系运算符的查询,Table API和SQL接口彼此紧密集成,以及Flink的DataStream和DataSet A...
2018-11-12 18:07:03
25135
3

原创 flink实战--flink原理解析
Flink出现的背景 我们知道目前流处理的主要流行的计算引擎有,Storm,SparkStreaming。但是这个两个计算引擎都有自己的局限性。Storm实现了低延迟,但是目前还没有实现高吞吐,也不能在故障发生的时候准确的处理计算状态(将数据从一个事件保存到另一个事件的,这些保留下来的是数据较计算状态),同时也不能实现exactly-once。SparkStreaming通过微批处理方法............
2018-09-30 15:40:22
21477
7

原创 flink实战--实战案例
本文以flink本地模式 进行各个场景的实战开发Flink本地运行模式Flink支持两种不同的本地运行机制: LocalExecutionEnvironment启动完整的Flink运行环境,包括一个JobManager和一个TaskManager。这些包含了内存管理以及在集群模式下运行时所运行的所有内部算法。 LocalEnvironment也可以向Flink传入用户自定义配置。...
2018-09-18 11:52:31
8784
3

原创 kafka工作原理与使用
1.Kafka概述1.1.什么是KafkaApache Kafka是分布式发布-订阅消息系统(消息中间件)。它最初由LinkedIn公司开发,之后成为Apache项目的一部分。Kafka是一种快速、可扩展的、设计内在就是分布式的,分区的和可复制的提交日志服务。传统消息中间件服务RabbitMQ、Apache ActiveMQ等,Apache Kafka与传统消息系统相比,有以下优点...
2018-06-30 20:43:01
1651

原创 kafka集群的搭建与使用
1.下载Apache kafka 官方: http://kafka.apache.org/downloads.htmlScala 2.11 -kafka_2.11-0.10.2.0.tgz(asc,md5)2.Kafka集群安装第一步:安装JDK &配置JAVA_HOME第二步:安装Zookeeper 参照Zookeeper官网搭建一个ZK集群, 并启动Z...
2018-06-30 20:33:57
912

原创 Hadoop之hdfs的工作原理和安装
一 HDFS简介(Hadoop Distributed File System)1简介:是Hadoop项目的核心子项目,是分布式计算中数据存储管理的基础,是基于流数据模式访问和处理超大文件的需求而开发的,可以运行于廉价的商用服务器上。它所具有的高容错、高可靠性、高可扩展性、高获得性、高吞吐率等特征为海量数据提供了不怕故障的存储,为超大数据集(Large Data Set)的应用处理带来了很...
2018-04-08 22:32:07
914

原创 redis的安装与使用
下载redis因为redis一般会在linux系统进行安装,所以下载时要下载linux系统的安装包。官网地址:http://redis.io/下载地址:http://download.redis.io/releases/redis-3.2.8.tar.gz因为Redis是用c语言写的 需要需要现编译在安装编译工具:make BuildFileant build.xml...
2018-04-01 16:52:26
446

原创 基于ssm三大框架实现登录注册功能的配置过程
第一步 ssm jar包整合,本人的下载资源里面有整合的jar包主要有:ssm整合jar包 ,jstl,数据库连接,josn junit,等jar包第二步,建立各类包和配置文件,尽量把各个配置文件分开,统一放在一个自己建立的config文件夹中,容易区分,后面也好检查更改主要配置,mybatis,spring—mybatis,和springmvc,以及web.xml和jdbc(数据库连接信息)j...
2018-03-17 16:35:13
2492
原创 piamon实战-- 如何使用 Paimon 的 Java API 实现数据的点查
点查(Point Lookup)是指通过 唯一键(Primary Key) 快速定位并返回单条或少量数据的查询模式。例如:根据用户 ID 查询用户信息、根据订单号查询订单详情等。点查的核心诉求是 低延迟 和 高吞吐,适用于实时风控、在线分析等场景。定义主键表结构,优化数据分布。构建过滤条件,使用指定查询键。执行查询并处理结果,结合流式更新实现实时查询。
2025-04-18 10:54:33
65
原创 paimon实战 -- Flink+Paimon实时湖仓实践案例分享
需求背景目前奥格运营平台提供的下单相关的实时标签(如用户最近一次实物购买时间等),都是基于来加工的,即不考虑用户后续的逆向退款情况。然而,运营同学需要实时圈选出近一段时间未成功购买(未下单或下单后退款)的人群,制定运营策略及发放权益,提高复购率。因此,该需求可以明确为:构建的实时标签。问题分析用户的下单行为和退款行为是有时序性的,因此当用户在下单后发生逆向退款行为时,需要回撤之前的订单结果,并回溯最近一次支付成功且未退款的订单信息。
2025-01-06 09:46:52
796
原创 paimon实战 -- 如何使用partial update实现并发写入paimon宽表代替双流join
在湖仓业务开发中,进行宽表开发是常见的业务需求, 常规方式都是通过双流或者多流进行join实现将多个表的数据合成一条数据写入宽表,但是join的方式会导致flink任务状态很大,任务不好维护。为了解决状态大的问题paimon提供了partial update,可以不使用join,完成多个insert into 写入或更新同一张表的同一条数据,本文将详细介绍partial update的使用方式和注意事项。
2024-12-12 20:58:06
1060
原创 paimon实战 -- paimon表数据写入和查询使用指南
通过设置consumer-id参数,您可以给流作业中的Paimon源表算子赋予一个Consumer ID,其值可以是任意的字符串。Consumer ID第一次创建时,它的起始消费位点根据中的规则确定。后续只要继续使用相同的Consumer ID,即可恢复Paimon表的消费进度。例如,为Paimon源表算子设置名为test-id的Consumer ID的SQL语句示例如下。
2024-12-12 16:16:41
1090
原创 paimon实战 -- 数据写入和更新底层数据流转解读
manifest-list-4ccc-c07f-4090-958c-cfe3ce3889e5-1 是增量清单列表(上图中的 manifest-list-1-delta),它包含一组对数据文件进行操作的清单条目,在此情形下指的是 manifest-1-0。manifest-list-4ccc-c07f-4090-958c-cfe3ce3889e5-0 是基础清单列表(上图中的 manifest-list-1-base),实际上是空的。小文件的数量会随着快照的增加而增多,这可能会导致读取性能下降。
2024-12-11 09:40:12
1245
原创 paimon实战 -- append表查询性能优化
对于任何数据库查询操作想要查询的性能好,都离不开索引,同样在查询Paimon非主键表的时候,我们可以通过排序过滤、索引过滤等方式提高查询速率。
2024-12-11 09:23:26
427
原创 flink实战 -- flink SQL 如何解析复杂(嵌套)json
在日常的开发中,最常用的数据格式是 JSON ,并且有的时候 JSON 的格式是非常复杂的(嵌套的格式),那在 Flink SQL 中进行解析的时候也会相当麻烦一点,下面将会演示如何在 DDL 里面定义 Map、Array、Row 类型的数据,以及在 SQL 里面如何获里面的值。目前,JSON 模式总是从表模式派生。下表列出了从 Flink 类型到 JSON 类型的映射。说明数据都可以正常的解析出来,如果遇到更加复杂的 JSON 格式的数据,只需要比葫芦画瓢就可以了,在复杂的格式都不是问题.
2024-11-11 16:33:33
672
原创 flink实战 -- flink SQL 实现列转行
WITH ('connector' = 'kafka', -- 使用 kafka connector'properties.bootstrap.servers' = 'master:9092,storm1:9092,storm2:9092', -- broker连接信息'properties.group.id' = 'jason_flink_test', -- 消费kafka的group_id'scan.startup.mode' = 'latest-offset', -- 读取数据的位置。
2024-11-11 16:30:13
639
原创 flink实战-- flink任务的火焰图如何使用
x 轴表示抽样数,如果一个函数在 x 轴占据的宽度越宽,就表示它被抽到的次数多,即执行的时间长。注意,x 轴不代表时间,而是所有的调用栈合并后,按字母顺序排列的。如果某个方法调用在其中一个并行任务中占用了100%的资源,但在其他任务中没有占用,则可能会被平均化而掩盖住瓶颈。选择一个对应的子任务,您可以看到相应子任务的火焰图。调用栈越深,火焰就越高,顶部就是正在执行的函数,下方都是它的父函数。混合模式的火焰图是由处于所有可能状态的线程的堆栈跟踪构建而成。级别上进行的, 即该算子的所有。
2024-11-05 21:12:01
538
2
原创 paimon实战 -- Changelog Producer到底有什么用?
其实是不适用的, 上面我们提到 None 模式的流读其实就是读取 L0的文件, 那么我们只要看 L0的文件是否包含 Key 的变更记录. 因为 write buffer 会有合并的逻辑, 所以, 对于 CDC 的数据, L0中可能会是已经在内存合并后的数据. 比如同一个 key 的-U 和+U 消息, 同时写入, 那么在 writer buffer 写入的时候就已经只保留+U 消息了, 所以 None 模式中 L0文件中的数据, 可能已经是合并后的数据, 对于 CDC 的数据也不适用.
2024-10-31 09:47:59
1312
原创 flink实战--如何基于java-agent技术增强Flink功能
一个Flink程序的运行,会依赖到一个或多个Connector(连接器),而这些连接器分为Source(主要用于读)和Sink(主要用于写),那么如果要监听到Flink作业流动的数据,我们这里可以简单尝试去查看支持Sink的Connector(例如:flink-connector-jdbc),看看 是否有实现一个公共的接口,然后对这个接口做监听,即可“读取”写入前的数据?接下来可以开始编写一个Agent类了,这里直接上代码。
2024-09-13 16:13:17
447
1
原创 paimon实战-- paimon表类型和数据合并方式
Paimon仅支持主键表和Append Only表。由于主键表需要按照主键更新,且要满足各种场景的数据更新,因此针对主键表piamon又提供的表的数据合并引擎。Paimon主键表创建Paimon表时指定了主键(primary key),则该表即为Paimon主键表。语法结构例如,创建一张分区键为dt,主键为dt、shop_id和user_id,分桶数固定为4的Paimon主键表。dt STRING,Paimon主键表中每行数据的主键值各不相同,如果将多条具有相同主键的数据写入Paimon主键表,将根据。
2024-08-22 09:28:14
1748
1
原创 Paimon实战 -- paimon系统表与审计监控
paimon系统表按照元数据的分类,划分了如下10个系统表,通过系统表可以获取paimon表各维度的元数据和消费组信息。通过收集这些元信息,不仅可以排查问题使用,还可以构建统一的paimon元数据管理和消费组管理平台,比如paimon-web就是通过查询系统表来实现表的元数据管理和展示的,本文将详细介绍各系统表的含义和用途。
2024-08-18 08:36:20
1477
原创 Paimon实战 -- paimon原理解析
Apache Paimon 原名 Flink Table Store,2022年1月在 Apache Flink 社区从零开始研发,Flink 社区希望能够将 Flink 的 Streaming 实时计算能力和 Lakehouse 新架构优势进一步结合,促进数据在数据湖上真正实时流动起来,并为用户提供实时离线一体化的开发体验。
2024-08-16 09:46:10
3132
原创 缓存更新策略中级总结
看到好些人在写更新缓存数据代码时,,而后续的操作会把数据再装载的缓存中。。试想,两个并发操作,一个是更新操作,另一个是查询操作,更新操作删除缓存后,查询操作没有命中缓存,先把老数据读出来后放到缓存中,然后更新操作更新了数据库。于是,在缓存中的数据还是老的数据,导致缓存中的数据是脏的,而且还一直这样脏下去了。我不知道为什么这么多人用的都是这个逻辑,当我在微博上发了这个贴以后,我发现好些人给了好多非常复杂和诡异的方案,所以,我想写这篇文章说一下几个缓存更新的Design Pattern(让我们多一些套路吧)
2024-06-10 07:23:41
1156
原创 flink实战--⼤状态作业调优实践指南-Flink SQL 作业篇
作为一种特定领域语言,SQL 的设计初衷是隐藏底层数据处理的复杂性,让用户通过声明式语言来进行数据操作。而Flink SQL 由于其架构的特殊性,在实现层面通常需引入状态后端 配合 checkpoint 来保证计算结果的最终一致性。目前 Flink SQL 生成状态算子的策略由优化器根据配置项 + SQL 语句来推导,想要在处理有状态的大规模数据和性能调优方面游刃有余的话,用户还是需要对 SQL 状态算子生成机制和管理策略有一定了解。
2024-06-04 20:27:10
716
1
原创 flink实战--大状态任务调优指南-DataStream作业
在 Flink 中,状态管理是流处理应用的核心概念之一,它允许算子(operators)在处理事件时保持和操作状态信息。在 Flink 中,状态可以被视为算子的“记忆”,它使得算子能够在处理无界流数据时保持对历史数据的跟踪。状态可以是简单的键值对,也可以是更复杂的数据结构,如列表、集合或自定义对象。状态的更新和查询对于实现复杂的流处理逻辑至关重要。具体说来,首先,Checkpoint 是 Flink 的一种容错机制。
2024-06-03 21:11:39
299
1
原创 paimon实战 --核心原理和Flink应用进阶
Flink 社区希望能够将 Flink 的 Streaming 实时计算能力和 Lakehouse 新架构优势进一步结合,推出新一代的 Streaming Lakehouse 技术,促进数据在数据湖上真正实时流动起来,并为用户提供实时离线一体化的开发体验。Flink 社区内部孵化了 Flink Table Store (简称 FTS )子项目,一个真正面向 Streaming 以及 Realtime的数据湖存储项目。
2024-05-15 15:15:38
951
原创 flink实战--Flink任务资源自动化优化
想要对 Flink 任务的消息处理能力进行分析,第一步便是获取该实时任务的 Kafka 数据源 Topic,目前如果数据源不是 Kafka 的话,我们不会进行分析。我们实时平台每天会定时扫描所有正在运行的 Flink 任务,在任务内存方面,我们能够结合 实时任务 GC 日志,同时根据内存优化规则,计算出 Flink 任务推荐的堆内存大小,并与实际分配的 Flink 任务的堆内存进行比较,如果两者相差的倍数过大时,我们认为 Flink 任务的内存配置存在浪费的情况,接下来我们会报警提示到平台管理员进行优化。
2024-03-08 14:52:04
435
原创 flink实战--flink的job_listener使用解析
自定义listener,只需要实现对应的接口。并将您的逻辑写入重写的函数中。Flink JobListener 接口有两种方法,一种是提交,一种是完成。接口的定义如下。两种方法都有两个参数。一个常见的参数是 Throwable。Throwable 参数是进程抛出的错误(如果有)。让我们分别看看这两种方法。Flink JobListener接口:onJobSubmitted顾名思义,只要提交作业以供执行,就会调用此函数内的代码,并调用该方法。
2024-02-04 10:49:47
798
原创 flink实战--FlinkSQl实时写入hudi表元数据自动同步到hive
为了实现hive, trino等组件实时查询hudi表的数据,可以通过使用Hive sync。在Flink操作表的时候,自动同步Hive的元数据。Hive metastore通过目录结构的来维护元数据,数据的更新是通过覆盖来保证事务。但是数据湖是通过追踪文件来管理元数据,一个目录中可以包含多个版本的文件。这一点和Hive元数据管理是不同的。所以说为了兼容Hive metastore,Hudi需要实时从Timeline同步元数据到Hive metastore。
2023-03-31 15:42:40
1573
原创 hudi实战-- 核心点解析
在 Flink 实时流中,经常会通过 Flink CDC 插件读取 Mysql 数据,然后实时入湖到 Hudi 中。所以在执行上述操作时,需要了解 Hudi 的基本概念以及操作原理,这样在近实时往 Hudi 中写数据时,遇到报错问题,才能及时处理,本文将详细介绍hudi的核心知识点。
2023-01-04 15:51:05
1875
原创 flink实战--flinkSQL写入hudi的四种方式
hudi官方提供了下面四种方式写入hudi,可以根据不通的业务需求选择合适的方式。
2023-01-04 15:05:56
2303
1
原创 yarn集群NodeManager日志聚合慢问题解决方案
正常情况作业提交到 Yarn 集群时,作业完成或者失败后,每个 NM 节点都会对每个 app 作业进行日志聚合操作,存储到hdfs指定的目录下,但是最近发现越来越多的任务通过yarn logs命令无法查询,经过排查发现很多任务的日志聚合变慢了,需要半小时甚至更多时间才能聚合完成。
2022-10-28 21:19:01
1267
原创 flink实战--flinksql 窗口TVF
表值函数(, TVF),就是指返回值是⼀张表的函数,其实z在Oracle、SQL Server等数据库中屡⻅不鲜。⽽在Flink的上⼀个稳定版本1.13中,社区通过FLIP-145提出了窗⼝表值函数(window TVF)的实现,⽤于替代旧版的窗⼝分组(group window)语法。本文将从 Window TVF 语法、近实时累计计算场景、 Window 性能优化、多维数据分析,来介绍TVF使用。对比发现:TVF 语法更加灵活。............
2022-08-11 21:19:43
1390
原创 flink实战--flinksql从基础到进阶必会知识点终极总结
随着社区FlinkSQL功能越来越完善,处理实时\离线数据相比于DataStream更加简单高效。因此FlinkSQL已经成为学习Flink中最重要的模块之一。虽然FlinkSQL相比DataStream使用起来简单高效,但是很多语法(DML,DDL,UDF,窗口聚合,实时topN等)还是需要一定学习成本,为了让大家快速全面的掌握FlinkSQL,本文将从全局视角梳理FlinkSQL中必学的知识点。.....................
2022-07-24 17:06:30
908
flink-connector-jdbc_2.11-1.11.2.jar
2021-02-24
flink需要的jersey-core和jersey-client
2019-03-01
基于SSM框架开发的共享单车管理系统
2018-06-06
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人