Flink
新手路上的程序员
这个作者很懒,什么都没留下…
展开
-
Flink SQL自定义jobName
Flink 版本1.14.0通过StreamTableEnvironment获取对应的Configuration 然后设置pipeline.name就可以自定义jobName了 StreamTableEnvironment tableEnv = StreamTableEnvironment.create(env); Configuration configuration = tableEnv.getConfig().getConfiguration(); .原创 2022-03-31 14:31:19 · 4902 阅读 · 0 评论 -
Flink idea测试checkPoint
在Flink StreamExecutionEnvironment对应的configuration中新增配置execution.savepoint.path就可以在启动Flink任务的时候默认从上一次的状态中恢复过来 Configuration configuration1 = new Configuration(); //flink parallelism=16 savepoint state// configuration1.setString("ex原创 2022-03-31 14:22:59 · 4326 阅读 · 3 评论 -
Mac搭建Flink集群
1.安装brew/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"2.安装Flinkbrew install apache-flinkflink安装完成后会有一个本地安装地址/usr/local/Cellar/apache-flink/1.14.43.启动Flink集群cd/usr/local/Cellar/apache-flink/1.14.4..原创 2022-03-15 14:27:50 · 2440 阅读 · 0 评论 -
flink SQL 内置函数源码
flink 版本1.12org.apache.flink.table.planner.codegen.calls.StringCallGen这个类里面搜索函数名称就可以找到对应的实现类和对应的实现方法参考博客原创 2021-12-27 17:44:12 · 1504 阅读 · 0 评论 -
实时数仓的思考
目前主流的数仓构建思想都是以维度建模为主,以下都是在工作中的一些思考和想法。1.维表延迟问题主流join动态无时序维表时如何解决因为维表延迟而导致的数据不准问题?目前来看好像只能通过批处理来修复流数据。如果通过批处理来修复那还能说是kappa架构?2.历史数据的处理以及新增需求后的刷数这里说的历史数据处理和刷数的需求在kappa架构不是不能实现而且需要考虑到时间长度的问题。当数据量级上去后使用标准的流式架构处理大量的历史数据(ETL)是一个非常耗时的问题。有时一天都完成不了刷数任务而且由于是使原创 2021-08-03 14:32:35 · 373 阅读 · 0 评论 -
flink 1.12 SQL Demo
Flink 版本 1.12.3source是kafka 维表是MySQL source left join 维表public class FlinkTableDemo { public static void main(String[] args) throws Exception { StreamExecutionEnvironment env = StreamExecutionEnvironment.getExecutionEnvironment(); ...原创 2021-12-24 11:15:23 · 1690 阅读 · 0 评论 -
Springboot整合flink过程思考
本人不是专业的后端开发,以下只代表个人看法,如有问题请指出。目标希望将flink的开发变成和Springboot注解开发一样,提高开发效率。具体实践通过nacos拉取配置消息,然后初始化连接池。然后在flink function中使用的对应的mapper文件,使用@Autowired注入然后调用对应的方法,但是在调用function类用的都是new此时会抛出NullPointerException。解决方案一 不使用@Autowired 而且在open中通过getBean()获取对应的实例,但是这原创 2021-12-15 18:13:23 · 3618 阅读 · 0 评论 -
SPI
大佬文章大佬文章中已经说的很清楚了,我这里基于自己的理解简单抽象一下。创建父类A,A对应的子类B和C。在META-INF/services下创建文件A,文件名称是A的全路径名称。A文件中编写B和C的全路径名称。然后通过SPI就可以自动将B和C加载到内存中。...原创 2020-12-25 11:21:32 · 101 阅读 · 0 评论 -
Flink 源码解析 Flink-Connector (Kafka)
flink版本:<flink.version>1.10.0</flink.version>FlinkKafkaConsumerBase:所有Flink Kafka Consumer数据源的基类。这个类实现了所有Kafka版本的公共行为open方法 @Override public void open(Configuration configuration) throws Exception { // determine the offset commit mode原创 2020-12-23 19:48:17 · 1396 阅读 · 0 评论 -
Flink 笔记二 Flink的State--状态原理及原理剖析
1.状态类型State按照是否有key划分为KeyedState和OperatorState Keyed State:KeyedStream流上的每一个Key都对应一个State(1)Keyed State表示和Key相关的一种State,只能用于KeydStream类型数据集对应的Functions和 Operators之上。Keyed State是Operator State的特例,区别在于 Keyed State 事先按照key对数据集进行了分区,每个 Key State 仅对应ー个O原创 2020-12-22 17:40:59 · 1799 阅读 · 4 评论 -
Flink sql withIdleStateRetentionTime源码
Flink1.8.0版本。好奇心来自Flink sql设置withIdleStateRetentionTime的最小和最大时间后,状态是如何删除的。 qConfig.withIdleStateRetentionTime( Time.hours(24), Time.hours(48));点击withIdleSta...原创 2019-11-20 18:01:03 · 1196 阅读 · 1 评论 -
Flink sql写法
Flink 1.6sql中的ifnull写法:(jiupiOrderType.isNull).?(0,jiupiOrderType) as jiuPiOrderType原创 2019-11-08 13:48:22 · 1650 阅读 · 0 评论 -
Flink restful API demo
主要解决用flink的restful API 来启动和停止yarn上的flink任务github地址:https://github.com/wenbaoup/flink-restful-demopackage com.wenbao.flink.restful.flink;import com.alibaba.fastjson.JSONObject;import org.apache.h...原创 2019-10-14 15:00:57 · 4525 阅读 · 7 评论 -
Streaming Systems 笔记一
将对无界数据的处理分为4个方面:1.和时间无关 没有Event Time2.近似计算3.Windowing by Processing Time4.Windowing by Event Time处理4个方面的通用方式:3个W一个H1.What results are calculated? Answered via transformations 计算的结果是什么?答案...原创 2021-10-31 19:08:50 · 448 阅读 · 0 评论 -
flink 笔记一 Flink体系结构
1.窗口时间是预定好的 不是根据数据的时间进行划分的2.Periodic Watermarks 用户自定义发送的watermark 连续发送3.Puncuated WaterMarks 基于事件(用户自定义事件)触发watermark的发送 实现PunctuateAssigner4.yarn-session 适合任务运行时间较短的任务5.yarn-pre 合适任务运行时间较长的...原创 2019-05-28 20:20:24 · 362 阅读 · 0 评论 -
Flink kudu sink
参照github上bahir-flink项目写的,主要是将POJO类写入kudu,代码地址还有一种是根据fieldNames 和fieldTypes写入,详细可以看flinkStreamSQL中的kudu Sink,代码地址...原创 2019-05-28 19:58:17 · 5294 阅读 · 0 评论 -
Flink 计算资源笔记
参考博客1.TaskManager通过solt个数划分资源,但是这里的资源仅仅是内存资源不包括CPU2.Flink Job任务时会对算子进行chain优化,目的是共享线程减少线程切换的开销并提升执行性能。chain后的算子对外而言就是一个算子,内部算子之间的数据流通,不会经过序列化/反序列化、网络传输,而是直接将消息对象传递给下游的 ChainOperator 处理。chain是有条件的:...原创 2019-05-16 21:07:09 · 939 阅读 · 0 评论 -
Flink 三 Hbase
现在有这样一个场景,我们需要将hbase做成一个数据流,而不是数据集。根据Flink自带的Flink-Hbase只能帮我们做到数据集,所以这个时候选择了重写Hbase的数据源。package com.yjp.flink.demo11;import org.apache.flink.streaming.api.functions.source.SourceFunction;impor...原创 2018-03-29 18:32:40 · 1473 阅读 · 4 评论 -
Flink 四 动态表
这一章说一下Flink动态表的概念。阿里的一篇文章,可以先看看会对动态表有一个模糊的概念。动态表就是一个根据流在动态变化的表。从阿里的例子可以看出,当一个表Stream发生改变的时候,就会引起Keyed Table这张表的一个动态变化,表Stream是一个无法撤回的表,Stream表是只能不停增加的一张表,但是Keyed Table 会根据Stream中数据的增长的变化来修改自己count...原创 2018-03-29 20:27:10 · 2388 阅读 · 1 评论 -
Flink 一 init start
一:Flink 不知道怎么去介绍Flink,从简单的说Flink就是一个流式计算的框架,选用Flink主要是阿里根据原有的Flink改为了更适合自己的Blink,基于阿里的影响,所以选择了Flink。一路坑,一路踩,现在稍微有点小收获,分享一下。Flink主要是对Sql流的支持,以及自身的特性,以流为基础,批处理是特殊的流。对Flink有兴趣的可以去搜索一下,介绍真的不太会。二:代码...原创 2018-03-29 17:32:38 · 400 阅读 · 0 评论 -
Flink kafkaSink
因为是用sql写的,写KafkaSink的时候,是准备用KafkaTableSink有两个问题,第一个KafkaTableSink只能接受appendstream但是table流是包含了删除的(流回撤),所以使用不了。使用的还是必须经过Filter将Table流中的false流剔除。第二个问题,进入KafkaTableSink的源码:public KafkaTableSink( ...原创 2018-06-21 18:01:15 · 5986 阅读 · 4 评论 -
Flink Kafka TumblingEventTimeWindows
好久没写博客了,更新一下。这篇博客主要将的是Flink中双流join的操作。在说双流join之前先了解一下window的定义,推荐博客。然后了解一下watermark的定义,推荐博客。我是在看完第二篇博客后,将数据源改为了kafka。但是一直没有触发window,打印window信息。然后在Flink的开发者邮箱中看见了问题解答。从邮箱的回答中可以很明显的看出为什么没有触发window。...原创 2018-09-20 17:59:03 · 9257 阅读 · 9 评论 -
Flink Kafka BroadCast
需求:在统计数据时,需要按照一定的规则将数据丢弃,规则是变化的。方案:选择了使用kafka来完成Flink的全局广播。未解决问题:当规则改变后,之前所统计的历史数据不可用。代码: public static void main(String[] args) throws Exception { StreamExecutionEnvironment env = S...原创 2018-10-08 11:40:23 · 1156 阅读 · 1 评论 -
Flink 问题记录
1.集群突然宕机找到Master节点的日志 vi 打开 Shift + g 跳到文件最后一行 Shift + n 查询任务名称找到对应的id 进入hdfs hadoop fs -ls /flink-checkpoints | grep 任务ID 找到id对应的checkPoint目录 进入目录 获取/flink-checkpoints/a1cb4cadb79c74ac8d3c7a11b6...原创 2018-10-31 10:22:11 · 13281 阅读 · 3 评论 -
Flink checkPoint
这篇是自己对checkPoint的一个理解,有不对的欢迎指出。官网地址:https://ci.apache.org/projects/flink/flink-docs-release-1.6/internals/stream_checkpointing.html直接从这张图开始 在代码层面设置checkPoint的间隔时间,时间达到时会触发checkPoint。此时从source...原创 2018-11-08 10:50:48 · 305 阅读 · 0 评论 -
Flink 自定义trigger
自定义trigger的主要目的是为了等待数据到齐:代码如下; flink版本1.6public class WatermarkTest { public static void main(String[] args) throws Exception { StreamExecutionEnvironment env = StreamExecutionEnvir...原创 2018-12-05 17:34:23 · 3119 阅读 · 0 评论 -
Flink State 扩容重新分配
参考学习博客然后写的学习笔记:KeyedState - 这里面的key是我们在SQL语句中对应的GroupBy/PartitioneBy里面的字段,key的值就是groupby/PartitionBy字段组成的Row的字节数组,每一个key都有一个属于自己的State,key与key之间的State是不可见的; OperatorState - Apache Flink内部的Source Co...原创 2019-01-04 09:20:33 · 1457 阅读 · 0 评论 -
Flink kafkaSink 二
这个是接着第一篇写的:主要是实现 直接上代码1.实现KeyedSerializationSchema接口public class DefinedSerializationTest implements KeyedSerializationSchema<Tuple2<String, String>> { private static final long...原创 2019-01-04 09:15:54 · 1999 阅读 · 6 评论 -
Flink 自定义udf 一 时间转换类
这个是一个批处理的小demo,数据源是mysql连接代码:JDBCInputFormat productStoreChangeRecordFormat = JDBCInputFormat.buildJDBCInputFormat() .setDrivername("") .setDBUrl("") ...原创 2019-01-24 13:57:59 · 3054 阅读 · 1 评论 -
Flink 异步IO 笔记
上一章介绍了维表的LRU,主要就是用了异步IO,参考文章1,参考文章2,官网类的具体实现不在介绍,主要是总结一下理论从使用角度,异步IO其实就是来了一条数据然后调用一个线程去查询,然后线程将查询结果反馈出来。查询完成后的数据输出有两种模式无序(unorderedWait)和有序(orderedWait)。有序比较简单:FIFO 先进先出无序:分为ProcessingTime无序和Even...原创 2019-05-08 14:27:43 · 818 阅读 · 0 评论 -
Flink 反压笔记
参考博客1,参考博客2,参考博客3这篇博客其实开始写的很简单,但是想到之前阿里在1.5回馈社区的新流控机制就一起记录一下 。从上游算子产出到下游算子消费数据,基本可用划分了三个模块:1.上游算子产出的record序列化成buffer数据结构插入到sub partition队列。2.网络传输:上下游可能调度部署到不同的container中,上游的数据需要经过网络传输到下游,涉及到数据拷贝...原创 2019-05-20 11:10:58 · 1472 阅读 · 0 评论 -
Flink 自定义维表
写这个博客主要是看了袋鼠云的flinkStreamSQL git地址:https://github.com/DTStack/flinkStreamSQL 自己还往上提交了kudu的sink和side 第一次commit到github上面还是很开心的。这里重点说的是flinkStreamSQL是如何完成side的,主要其实是两种缓存方案LRU和ALL。这里忽略所有的sql解析 注册等等,单纯的...原创 2019-05-07 17:46:00 · 3519 阅读 · 1 评论 -
Flink 二 mysql
主要也是代码的一些操作,API的一些使用1.从文件中读取数据流然后存入Mysql package com.yjp.flink.demo6;import org.apache.flink.api.common.functions.FlatMapFunction;import org.apache.flink.api.java.tuple.Tuple2;import org.a...原创 2018-03-29 18:21:08 · 491 阅读 · 0 评论