- 博客(7)
- 收藏
- 关注
原创 FLINK CEP 1.13.6 动态规则源码修改1.0
🧿 在每条数据到来时,如果needRefresh < refreshVersion,则清理状态,清理定时器(具体看第3点),并将refreshVersion赋值给needRefresh;🧿 初始化状态时,如果是第一次启动,refreshVersion为0号版本,如果是从状态后端中恢复,refreshVersion为refreshFlagState的第一个值;时,Flink 会根据输入流的 key 对数据进行分区,每个分区对应一个并行实例,每个并行实例会重复获取规则,尤其是访问数据库,会增加数据库压力。
2025-02-10 17:27:38
651
原创 FLINK1.13.6 CEP 动态规则源码阅读
根据用户代码Pattern来构建,begin、next、followby会重新生成新的Pattern,新的Pattern中含有previous属性来存储上一个Pattern(有点像链表结构),如果是调用其他方法,如:where,则是作为Pattern属性,where是condition属性;稍后会在PatternStreamBuilder中构建NFAFatory、CepOperator。
2025-02-10 17:24:40
321
原创 flink之addSource & fromSource 、addSink & SinkTo
fromSource和SinkTo,是flink提供的简易的读取和输出的算子,建议优先使用fromSource和SinkTo,并结合flink官方文档;说个题外话,在1.14以前flink Kafka都是使用的是addSource,实现的是ParalismSourceFunction以及一些容错的类,1.14发布以后采用的fromSource,使用的架构是。inputFormat:定义读取文件的类,具体可以看有哪些实现类,根据需要读取文件的类型定,也可以自定义;
2023-03-30 16:06:17
6073
原创 Spark自定义输出文件
本文将通过源码出发讲述spark如何调用hadoop几种OutputFormat,从而实现的文件输出,这里将讲述几种工作中常使用的算子,例如:saveAsTextFile(path) 、saveAsHadoopFile(path) saveAsTextFile(path)底层调用也是saveAsHadoopFile(path),所以这里主要是讲述后者的源码;这一步也将带你认识到可以自定义的内容;2.PairRDDFunctions 这里指定了OutputForm
2023-03-23 18:49:19
878
原创 站在算子角度理解spark分区策略
首先,所谓的分区策略,我的理解就是让数据去往哪里。看了很多网上讲spark分区策略,虽然知道了spark有defaultPartitioner、HashPartitioner、RangerPartitioner,但是回到实际工作中还是很懵,比如:啥时候会用到分区策略?用到的时候具体使用的那种策略呢?于是乎,小研究了下,在此总结一下。
2023-03-22 17:54:32
284
原创 flink之startNewChain、disableChaining、slotSharingGroup
图1图二1.task:一个task可以看成是一条完整的算子连(source -> sink),在默认情况下,且线程够用的情况下,一个task运行在一个slot里面;2.subtask:task的组成单位,一个subtask由一个线程来运行;3.operator chain:subtask中的算子连成链;4.形成subtask的规则:①当数据发生重定向时例如KeyBy操作。②当程序算子并行度发生变化时。③。
2023-02-16 10:28:20
1805
原创 Spark core通过textFile读取Hdfs文件blockSize如何设置?
其实Spark core无论是读取hdfs还是读取本地文件都会以hadoopfile的形式进行读取,不同点在于读取本地文件时可以通过在resources文件中放入hdfs-site.xml文件设置fs.local.block.size参数来控制blocksize大小,而读取hdfs文件时,blocksize是通过获取此文件在hdfs存储的实际块大小,另外虽然blocksize和具体分区数有关但不是唯一决定因素;接下来,就让我们通过源码简单的来看看。
2023-02-13 15:41:48
482
4
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人