- 博客(26)
- 资源 (3)
- 收藏
- 关注
![](https://csdnimg.cn/release/blogv2/dist/pc/img/listFixedTop.png)
原创 任务治理“三板斧“之任务编排
背景先说说写这个系列的目的吧,有认识我的朋友知道,我在杭州某不知名电商工作,负责数据平台方向的开发,虽然我之前一直分享的都是某些组件的用法,但我的本职工作还是围绕着各个组件去打造去中心化的数据能力。我们团队从去年开始,一直在朝着这个方向努力;经过一年的积累,我们也做出了部分的产品,如元数据系统、开发平台、调度中心、数据交换等等;但随着我们的业务在不断的扩张与发展,我们平台的用户逐渐的增加,最先扛不住的不是我们的业务系统、不是我们自研的数据产品,而是我们的大数据集群具体体现在多个地方Yarn所有队列拥
2021-11-28 16:12:59
4064
5
![](https://csdnimg.cn/release/blogv2/dist/pc/img/listFixedTop.png)
原创 Apache Hudi 从入门到放弃(3) —— Flink Sql写过程分析(上)
背景介绍上一期给大家讲述了Hudi中,MOR表的目录文件结构;本打算这一期讲一下COW表的目录文件,不过考虑到目前在实时读写入Hudi的场景下,用的最多的还是MOR表,所以暂时跳过COW表的文件分析,转而对hudi-flink模块进行深入理解;本次分析也仅涉及hudi-flink中的内容另外,目前COW表已经支持Flink Streaming Read,有兴趣的可以试试看,我也会在之后的分享中从简单使用&原理分析来讲一讲COW表欢迎大家指出我文章的不足,让我更进一步源码分析开始之前Hud
2021-05-09 16:48:15
4116
13
![](https://csdnimg.cn/release/blogv2/dist/pc/img/listFixedTop.png)
原创 Apache Hudi 从入门到放弃(2) —— MOR表的文件结构分析
Apache Hudi 从入门到放弃(1) —— MOR表的文件结构分析写在开始本篇带大家分析一下Hudi中MOR表的文件结构刚开始看Hudi一周,有什么不对的地方欢迎大家指出事前准备建表-- 先准备一张Hudi MOR表CREATE TABLE hudi_test_dijie( id bigint, dt string, ts TIMESTAMP(3), PRIMARY KEY(id) NOT ENFORCED)PARTITIONED BY (`dt`)WITH ('co
2021-05-02 23:01:39
6122
20
![](https://csdnimg.cn/release/blogv2/dist/pc/img/listFixedTop.png)
原创 Apache Hudi 从入门到放弃(1) —— Hudi的初步尝试
写在开始本篇内容主要是分享一下如何通过Flink Sql 流式的读写Hudi表,也会说说我对Hudi的理解IDE选择的是Zeppelin,环境配置可以参考一下我这篇博客环境准备代码编译这里我们使用的是Master分支的Hudi进行编译git clone https://github.com/apache/hudi.git# 我使用的是scala版本为2.11的Flink,如果是2.12的scala,请在下面语句的最后加上 -Pscala-2.12 -Dscala-2.12mvn cl
2021-04-28 20:36:24
4405
6
![](https://csdnimg.cn/release/blogv2/dist/pc/img/listFixedTop.png)
原创 Apache Iecberg 从入门到放弃(3) —— 源码系列之Flink读过程分析
背景介绍上一章和带大家了解了一下Iceberg的元数据文件特殊之处,也简单的给大家描述了一下Iceberg是如何从快速定位到数据文件的,上一章将的比较干,因为都是一些理论知识,这一章我们从iceberg-flink模块的源码出发,带大家更加深入的了解Iceberg注意:本次源码分析基于Iceberg 0.11x分支,主要是讲解iceberg-flink模块,其余模块因为暂未深入了解所以会跳过,敬请见谅;并且如果有任何地方讲述不当,请直接指出另外,需要对Iceberg和Flink都一定的基础,否则会出现
2021-04-24 18:33:28
2299
8
![](https://csdnimg.cn/release/blogv2/dist/pc/img/listFixedTop.png)
原创 Apache Iecberg 从入门到放弃(2) —— Iceberg文件解析
背景介绍上一章我们讲过了如何将Flink和Iceberg结合,演示了一些常用的操作,并且在文章的最后演示了一个比较全的DEMO。主要是讲了一些使用上的内容,对于原理没有太过深入,而既然我们的标题是从入门到放弃,那么必然是要对Iceberg进行深入了解的,不然怎么会放弃呢????所以,今天我们就来对Flink 结合 Iceberg后,写在HDFS上的元数据文件进行解析不过在开始之前先准备一下工作先下载avro-tools点我下载用来分析我们的元数据文件再将我们上一次表中的所有元数据文件下载下来h
2021-04-13 19:38:29
4162
12
![](https://csdnimg.cn/release/blogv2/dist/pc/img/listFixedTop.png)
原创 Apache Iecberg 从入门到放弃(1) —— Flink X Iceberg On Zeppelin
背景介绍上一章我们聊过了Data Lake House&Iceberg的相关知识,也算是初步入门了。今天再来看看如何将Flink 和 Iceberg结合。Iceberg的官方案例是通过Flink Sql Client来实现的,这个东西的局限性比较大,而且不太好看(这是主要原因),所以我打算用Zeppelin来代替Sql Client。光说不练假把式,开整环境准备开始之前重申一下,我的环境准备是建立在Flink 已经能够正常在Zeppelin上提交到Yarn集群,并且与Hive打通,如果还没
2021-04-09 15:34:14
1596
1
![](https://csdnimg.cn/release/blogv2/dist/pc/img/listFixedTop.png)
原创 Apache Iecberg 从入门到放弃(0) —— 初步入门
什么是数据湖在开始整活之前,先介绍一下什么是数据湖,来一段亚马逊云上的介绍:数据湖是一个集中式存储库,允许您以任意规模存储所有结构化和非结构化数据。您可以按原样存储数据(无需先对数据进行结构化处理),并运行不同类型的分析 – 从控制面板和可视化到大数据处理、实时分析和机器学习,以指导做出更好的决策。将任意结构的数据(Mysql、文本、视频)存储在任意规模的的存储系统中,可以按照原样存储数据(不需要强制绑定schema,也就是不用确定表结构),并进行不同的分析,比如离线实时ETL、机器学习、报表分
2021-04-07 20:52:08
1025
2
![](https://csdnimg.cn/release/blogv2/dist/pc/img/listFixedTop.png)
原创 Flink Sql on Zeppelin(7)——Hive Streaming Sink之合并小文件
概述之前和大家聊Hive Streaming Sink的时候说过,可以通过指定参数sink.partition-commit.policy.kind,来决定在提交分区时要做的事,比如合并小文件本身Hive Streaming Sink是基于FileSystem Streaming Sink,FileSystem Streaming Sink其实已经做了保护,减少小文件的产生。主要是这两个参数sink.rolling-policy.file-size:文件超过多大会切分sink.rolling-p
2020-07-30 20:33:45
2521
5
![](https://csdnimg.cn/release/blogv2/dist/pc/img/listFixedTop.png)
原创 Flink Sql教程(8)
Flink精准去重概述为啥需要去重在某些情况下,由于上游的作业不是端到端的exactly-once,在上游出现问题自动failover的时候,该任务的sink端很大可能出现重复数据;这些重复数据又会影响下游的聚合作业(如SUM,COUNT)。所以,我们的作业需要去重完再进行计算去重方法TopN(Flink官网推荐的方式)Group ByUDTF(维表去重)各自优缺点前两者纯内存去重,效率高,速度快,使用简单;但是一旦任务KILL再启动就会有状态丢失,那么下游计算过的数据又会
2020-06-05 14:23:46
3124
3
![](https://csdnimg.cn/release/blogv2/dist/pc/img/listFixedTop.png)
原创 Flink Sql教程(7)
Redis异步维表概述之前和大家聊过维表,也聊过FLINK中如何使用维表,目前FLINK自带的维表有两种,一种是JDBC维表,一种是HBASE维表。其中JDBC维表支持缓存,HBASE暂不支持两种维表也都是同步维表,性能较弱我之前也说过会在后面的教程实现以下异步第三方维表,加上一个叫啤酒鸭的问我相关的问题,就抽空写了一把redis异步客户端我用的是Lettuce,大家也可以用Redission,Jedis是同步的,大家千万注意不过和我之前说的一样,缓存会遇到旧数据的问题,所以也相当于给大家留了
2020-06-03 16:54:03
4220
4
原创 Flink 如何将聚合结果写入kafka ——读写canal-json
概述1.11版本最重要的特性Hive Streaming在之前的博客,包括Flink中文社区的微信公众号上,都和大家聊过不少次了。那么除此之外,还有什么特性值得大家关注呢?CDC数据的解析:可以解析canal、debezium推到kafka中的binlog;如果在binlog中是个DELETE的操作,那么会自动解析成撤回流,将之前那条下发过的数据撤回;美中不足的是,只支持读,不支持写,这也就以为着无法将撤回流写入kafkaPostgres Catalog:如果要用Postgres中的表,不需要再C
2020-08-05 14:57:16
6485
2
原创 Flink Sql on Zeppelin(6)——Hive Streaming
概述Flink1.11 在上周二正式release了,在此之前我也给大家分享过了Flink1.11的一些新特性,然后和大家说过这一期会给大家单独说Flink X Hive本来打算找点数据,然后做一期类似于实时数仓的内容,但是数据不太好找,加上时间、精力有限就简单和大家聊聊吧在开始之前,大家参考一下Hive Integration,把flink 连接hive所需要的包放到lib目录下Hive Streaming Sink先看看官网是怎么描述Hive Streaming Sink的吧SET
2020-07-19 18:05:48
1772
5
原创 Flink Sql on Zeppelin(6)——Flink1.11预览(上)
Flink 1.11 Table&Sql预览概述之前就和大家说过要做一期Flink 1.11的超前点映版,加上Flink 1.11 release在即,所以这次的内容就和大家简单分享一些Table&Sql方面的新特性就像标题一样,还是会在Zeppelin中演示,由于两个项目都没release,所以我自己编了下,不过大家用的时候可能有点问题,可以钉钉联系我解决,钉钉号是rnodvmd。链接: https://pan.baidu.com/s/1qCsv9nf35mrqLSTMq9f1fQ
2020-07-05 14:34:06
2961
原创 Flink Sql on Zeppelin(5)——双流Join
双流Join概述其实之前和大家聊过双流Join,这次之所以再拉出来讲并不是在炒冷饭,而是发现了之前讲的一些不足以UnBounded Join来说,我之前一直以为,无论哪边的流先到,只要匹配上之后,key对应的、存储在state中的数据应该被清理。这样,无论哪边再来一条同样key的数据,不会触发数据下发,也就是一对一。其实这样的理解是错误的,key会一直存储在state中,直到OOM或者配置TTL之后被清理。那么,也就是会多次触发数据下发,也就是会发生一对多、多对多之前关于Time Interval
2020-06-28 17:48:26
1305
1
原创 Flink Sql on Zeppelin(4)——聚合结果写入Kafka
聚合结果写入Kafka概述大家在使用Flink Sql,并将聚合数据写入Kafka的时候,肯定遇到过这样的报错Exception in thread "main" org.apache.flink.table.api.TableException: AppendStreamTableSink requires that Table has only insert changes.at org.apache.flink.table.planner.plan.nodes.physical.stream.
2020-06-20 15:21:01
1934
原创 Flink Sql on Zeppelin(3)——UDF&Redis维表
UDF概述UDF在我们的Sql开发中,是一个必不可少的帮手,通过Sql+UDF能够解决我们90%的问题Flink目前提供了大量的内置UDF供我们使用,详细可以参考官方文档不过有些时候,内置的UDF并不满足我们的需求,那就需要自定义UDF下面我们就来看看如何在Zeppelin中使用自定义UDF使用在Flink中,使用代码注册UDF有两种方式tEnv.registerFunction("test",new TestScalarFunc());tEnv.sqlUpdate("CREATE
2020-06-14 14:23:49
1727
4
原创 Flink Sql on Zeppelin(2)——维表Join
维表join代码编写之前在讲Flink Sql的时候和大家聊过维表以及如何用Flink Sql来完成维表Join现在带大家看看如何用Zeppelin来实现这个功能首先,我们先引入我们所需的依赖包,目前大家先跟着我这么写,之后会讲解引入依赖的多种方式和区别。 %flink.conf # 这是第一个paragraph,大家不要把所有代码写在一个paragraph里面 # 配置一下依赖包,这种方式会自动下载依赖 flink.execution.packages org.apache.flink
2020-06-11 12:00:12
1848
原创 Flink Sql on Zeppelin(1)——环境准备
环境准备概述为什么会选择Sql目前开发Flink的方式有很多,一般来说都是开发同学写JAVA/SCALA/PYTHON项目,然后提交到集群上运行这种做法较为灵活,因为你在代码里面可以写任务东西,什么维表JOIN、参数调优,都能很轻松的搞定但是对开发同学的要求较高,有一定的学习成本。比如有些同学擅长JAVA,有些擅长PYTHON,而在我们的项目开发过程中,是不会允许多种语言共存的,一般来说都是选择JAVA作为我们的开发语言,那么,对于擅长PYTHON的同学来说,再从头开始攀爬JAVA这座大山,
2020-06-09 10:04:16
2457
4
原创 Flink Sql教程(6)
FLINK SQL 解析复杂JSON&维表关联HBASE解析复杂JSON目前我们的数据源都是以JSON格式存储在KAFKA中,所以今天就写一下怎么在DDL语句中,解析复杂JSON先贴一份JSON数据{ "afterColumns":{ "created":"1589186680", "extra":{ "canGiving":false }, "parameter":[ 1
2020-05-29 15:47:23
3469
8
原创 Flink Sql教程(5)
Flink 双流Join概述在之前的Flink教程03里面给大家讲过了维表Join,今天来和大家分享一下双流Join目前Flink双流Join分成两类:UnBounded Join 和 Time Interval Join在有些场景下,用哪个都行,不过后者的性能会优于前者,而且如果在双流Join之后想要再进行窗口计算,那么只能使用Time Interval Join,目前的UnBounded Join后面是没有办法再进行Event Time的窗口计算UnBounded Join分为两种Jo
2020-05-24 17:06:26
2516
1
原创 Flink Sql教程(4)
Flink UDF概述什么是UDFUDF是User-defined Functions的缩写,即自定义函数。UDF种类UDF分为三种:Scalar Functions、Table Functions、Aggregation FunctionsScalar Functions接收0、1、多个参数,返回一个值Table Functions和上面的Scalar Functions接收的参数个数一样,不同的是可以返回多行,而不是单个值Aggregation Function
2020-05-22 23:17:30
2992
原创 Flink Sql教程(3)
维表Join尝鲜什么是维表维表,维度表的简称,来源于数据仓库,一般用来给事实数据补充信息。假设现在有一张销售记录表。销售记录表里面的一条销售记录就是一条事实数据,而这条销售记录中的地区字段就是一个维度。通常销售记录表里面的地区字段是地区表的主键,地区表就是一张维表。更多的细节可以面向百度/谷歌编程。为什么Flink中需要维表以流计算为例,一般情况下,消费的消息中间件中的消息,是事实表中的数...
2020-04-30 09:53:30
5416
13
原创 Flink Sql教程(2)
从kafka到mysql新建Java项目最简单的方式是按照官网的方法,命令行执行curl https://flink.apache.org/q/quickstart.sh | bash -s 1.10.0,不过这种方法有些包还得自行添加,大家可以复制我的pom.xml,我已经将常用的包都放进去了,并且排除了冲突的包。注意的是,本地测试的时候,记得将scope注掉,不然会出现少包的情况。也可...
2020-04-30 09:48:58
3128
3
原创 Flink Sql教程(1)
环境准备安装Docker及相关镜像Docker下载链接 由于穷买不起mac,所以挂的windows的链接,可自行去Docker官网下载其他版本。安装过程省略,毕竟一路下一步的东西,下面开始安装并启动kafka、mysql等服务。安装zookeeper服务因为kafka需要将许多信息固化存储在zk上,所以我们首先得安装zookeeper服务执行docker run -d ...
2020-04-30 09:44:16
3195
1
flink-json-1.11.0.jar
2020-08-05
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人