![](https://img-blog.csdnimg.cn/20201014180756928.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Flink
文章平均质量分 86
shirukai
路漫漫其修远兮
展开
-
Flink协调器Coordinator及自定义Operator
最近的项目开发过程中,使用到了Flink中的协调器以及自定义算子相关的内容,本篇文章主要介绍Flink中的协调器是什么,如何用,以及协调器与算子间的交互。原创 2024-06-06 17:57:19 · 1223 阅读 · 0 评论 -
Flink CDC PostgresCDC全量数据同步阶段支持字段排序
在使用PostgresCDC进行数据同步的时候,全量阶段会导致状态大小疯涨,平时设置的状态ttl是基于处理时间的,但是全量阶段数据在短时间内被Flink处理,ttl的设置会导致过期的数据被丢弃,数据处于无序状态,会导致处理结果不一致。如果源数据有时间字段可以表示处理顺序的话,可以按照此字段进行有序处理,将会解决处理结果不一致的问题。当然如果不设置ttl,则无需考虑乱序问题。本篇文章主要介绍如何在PostgresCDC全量阶段(非增量快照同步)支持字段排序。原创 2024-05-16 10:35:57 · 313 阅读 · 0 评论 -
Flink LookupJoin攒批查询
使用Lookup Join进行维表关联时,流表数据需要实时与维表数据进行关联。使用Cache会导致数据关联不准确,不使用Cache会造成数据库服务压力。攒批查询是指攒够一定批数量的数据,相同的查询Key只查询一次,从而减少查询次数。对短时间Key重复率比较高的场景有不错的性能提升。原创 2024-05-16 10:36:54 · 607 阅读 · 0 评论 -
Flink1.17之前实现JdbcLookup谓词下推
Flink在1.17版本之前,flink-connector-jdbc的LookupJoin是不支持on条件下推的,例如on device_id=‘1’,查询SQL中是不会包含device_id='1’的条件,相关issue:https://issues.apache.org/jira/browse/FLINK-32321,在1.19版本该问题已经解决。谓词不下推会导致每次查询的数据量变多,本篇文章主要介绍如何在1.17支持谓词下推。原创 2024-05-16 10:37:41 · 499 阅读 · 0 评论 -
Flink写RocketMQ支持动态UserProperty
Flink写RocketMQ支持动态UserPropertyFlink version: 1.14.0RocketMQ version: 4.5.2Github: https://github.com/shirukai/rocketmq-flink.git本篇文章主要记录了在Flink Table中如何使用RocketMQ的Sink,并且通过修改源码支持动态的UserProperty,写这篇文章就当是补充学习吧,其中涉及到Flink Table自定义数据源、RocketMQ的使用等相关的知识。原创 2022-03-10 17:40:35 · 3961 阅读 · 1 评论 -
Flink中基于Akka的RPC实现
Flink中基于Akka的RPC实现版本说明:Flink: 1.10.11 前言Flink中RPC是基于Akka实现的,在上一篇文章《使用Akka实现简单RPC框架》中,使用Akka的基本API加上Java动态代理实现了一个简单的RPC框架,对Akka不太熟悉的同学可以先参考那篇文章手写一下代码,然后再来阅读这篇文章会更好的理解Flink的RPC实现,基本原理都是一样的。我也是先看的Akka相关知识,然后再重新阅读的Flink代码,不得不承认,我上一篇文章的实现并没有Flink中实现的优雅,确实有原创 2021-11-18 17:58:50 · 2497 阅读 · 0 评论 -
使用Akka实现简单RPC框架
使用Akka实现简单RPC框架最近简单看了看Flink的RPC通讯相关的源码,它是通过Akka实现的,为了更好的阅读理解代码,又大体看了看Akka相关的知识。这篇文章主要记录了如果使用Akka来实现RPC通讯,其中涉及到了akka actor、akka remote等相关知识。1 实现原理首先大体讲一下实现原理,其实很简单,与我之前写过的RPC框架系列文章里手写了一个原生的JavaRPC例子很类似,只不过通过Akka我们不需要进行底层的网络编程以及去关心数据的序列化与发序列化问题。首先客户端使用动原创 2021-11-17 18:26:22 · 2441 阅读 · 0 评论 -
Flink自定义窗口触发器
Flink内置触发器及自定义窗口触发器flink: 1.10.1Github: https://github.com/shirukai/flink-examples-trigger.git前段时间同事开发遇到一个需求,要求按照事件时间10分钟窗口计数,同时需要有新数据时每分钟输出一次结果。窗口计数非常简单,设置一个窗口,然后运用一个聚合函数就可以解决了。但是有新数据时每分钟输出一次结果,好像实现起来并不容易,因为按照平时的窗口,设置10分钟之后,要等到watermark超过了当前的窗口之后,才会被原创 2021-06-08 14:17:32 · 5105 阅读 · 10 评论 -
Flink在k8s生产环境高可用部署
Flink在k8s生产环境高可用部署flink: 1.10.1kubernetes: 1.18.81 前言目前参与的项目基本开发完成,打算开发的微服务和Flink任务统一部署到k8s上。之前几个项目都是跑在YARN上,Flink on YARN的部署模式是在生产中比较常见,YARN的稳定性和资源调度能力也是有目共睹的,依托Hadoop生态Flink高可用也很容易实现。关于On YARN还是On K8S之前文章都有介绍,《Flink Cluster On YARN部署》和《Flink Clust原创 2020-11-02 16:56:24 · 8020 阅读 · 33 评论 -
Flink Cluster On Kubernetes部署
#Flink Cluster On Kubernetes部署Flink版本:1.10.1kubernetes:1.16.5Flink 在Kubernetes上部署分为Job cluster和Session cluster两种模式。Job cluster需要我们将自己的Jar打到flink镜像里一块部署,session模式可以启动cluster之后,我们再提交jar到session cluster。1 环境准备在YARN模式部署的文章里,我们是直接从官网下载编译后的包进行部署的。由于Job C原创 2020-09-23 16:34:30 · 1562 阅读 · 0 评论 -
Flink Cluster On YARN部署
Flink Cluster On YARN部署Flink版本:1.8.2Hadoop: 3.0.3参考文章:文中关于Per-Job、Session模式的描述摘自《Deploy Apache Flink® Natively on YARN/Kubernetes》 https://ververica.cn/developers/deploy-apache-flink-natively-on-yarn-kubernetes/Flink在YARN上部署有两种模式,一种是Session模式,另一种是Pe原创 2020-09-23 16:33:40 · 2045 阅读 · 0 评论 -
Flink算子扩缩容过程中的状态迁移
Flink算子扩缩容过程中的状态迁移根据数据量动态调整Flink应用的算子并行度,在实际业务应用中很常见。对于无状态的算子来说,更改算子并行度非常的容易。但对于有状态的算子来说,调整算子并行度时,需要考虑状态的重新分配。之前文章里提到,Flink中的状态分为键值分区状态、算子列表状态、算子聚合状态、广播状态,那么这些状态在并行度改变时,是如何在子任务实例间迁移的?这篇文章,将分别使用代码示例介绍这四种状态的迁移过程。1 键值分区状态键值分区状态,是应用在KeyedStream上的算子里使用的状态,关于原创 2020-09-20 10:41:02 · 1944 阅读 · 0 评论 -
Flink中使用嵌入式ElasticSearch进行单元测试
Flink中使用嵌入式ElasticSearch进行单元测试Flink版本 1.8.0ElasticSearch版本 5.1.2Scala版本 2.11.12Java版本 1.8Github地址:https://github.com/shirukai/flink-examples-embedded-elasticsearch.git1 前言前些时间同学在群里问关于ElasticSearch的单元测试,如何mock。当时看到这个问题,我想的是mock一个写ElasticSearch的客户端的原创 2020-06-23 16:25:35 · 1724 阅读 · 0 评论 -
调试Local模式下带状态的Flink任务
调试Local模式下带状态的Flink任务Flink版本: 1.8.0Scala版本: 2.11在本地开发带状态的Flink任务时,经常会遇到这样的问题,需要验证状态是否生效?以及重启应用之后,状态里的数据能否从checkpoint的恢复?首先要明确的是,Flink重启时不会自动加载状态,需要我们手动指定checkpoint路径。笔者从Spark的Structured Streaming转到Flink的时候,就遇到这样的问题。在Spark中,我们使用的状态信息会随着程序再次启动时自动被加载出来。所以原创 2020-06-14 13:00:02 · 4087 阅读 · 6 评论 -
Flink DataStream API之Operators
Flink DataStream API之Operators官网位置:https://ci.apache.org/projects/flink/flink-docs-release-1.9/zh/dev/stream/operators/Operators transform one or more DataStreams into a new DataStream. Programs can combine multiple transformations into sophisticated dat原创 2020-06-11 16:13:06 · 388 阅读 · 0 评论 -
Flink DataStream API之State
DataStream API 之State无论StructuredStreaming还是Flink在流处理的过程中都有一个“有状态计算“的概念,那么到底什么是有状态计算,有状态计算应用到什么场景,在Flink的DataStream API中如何使用状态,以及在Flink中状态是如何管理的,在这篇文章中,我们一点一点来学习。1 什么是有状态计算在讲什么是有状态计算之前,先简单说一下什么是无状态...原创 2019-10-11 17:43:11 · 875 阅读 · 0 评论