Home数据开发修炼手册
数据开发修炼手册

数据开发修炼手册

@语兴小助理-颜

专栏作者:语兴,专注于带粉丝学习从0到1搭建企业级数据仓库。

小册分为2个核心板块:真实场景面试问答及数据技术提升。

小册是永久买断制,原价99.9,限时特惠价19.9。

订阅后记得加助理微信:yxdata_yan,免费拉你进小册专属知识交流群。

内容持续更新,预计不少于100篇内容
订阅227
文章91
最后更新:2024-11-14 16:29
查看 【数据开发修炼手册】 详情查看 【语兴小助理-颜】 主页
分享到微信打开

免费内容

2024-11-28 17:35

81. 超哥分享Flink CDC(二)

Flink CDC使用在本地启动一个MySQL的Docker环境docker run -it --rm --name mysql -p 3306:3306 -e MYSQL_ROOT_PASSWORD=debezium -e MYSQL_USER=mysqluser -e MYSQL_PASSWORD=mysqlpw -e TZ=Asia/Shanghai quay.io/debezium/example-mysql:2.4 创建表create database cdc_test; use cdc_test; create table cdc_table (     id int primary key auto_increment,     name varchar(1000),     age int ); 在idea中新建一个Java项目导入依赖:<flink-cdc.version>2.4.2</flink-cdc.version> <flink.version>1.16.3</flink.version> <logback.version>1.2.7</logback.version> <dependency>     <groupId>com.ververica</groupId>     <artifactId>flink-connector-mysql-cdc</artifactId>     <version>${flink-cdc.version}</version> </dependency> <dependency>     <groupId>org.apache.flink</groupId>     <artifactId>flink-connector-base</artifactId>     <version>${flink.version}</version> </dependency> <dependency>     <groupId>org.apache.flink</groupId>     <artifactId>flink-clients</artifactId>     <version>${flink.version}</version> </dependency> <dependency>     <groupId>org.apache.flink</groupId>     <artifactId>flink-table-runtime</artifactId>     <version>${flink.version}</version> </dependency> <dependency>     <groupId>org.apache.flink</groupId>     <artifactId>flink-runtime-web</artifactId>     <version>${flink.version}</version> </dependency> <dependency>     <groupId>ch.qos.logback</groupId>     <artifactId>logback-classic</artifactId>     <version>${logback.version}</version> </dependency> 编写代码public class FlinkCDCApplication {     public static void main(String[] args) throws Exception {         StreamExecutionEnvironment env = StreamExecutionEnvironment.getExecutionEnvironment();         env.setParallelism(1);         env.enableCheckpointing(60000L);         MySqlSource<String> mySqlSource = MySqlSource.<String>builder()             .hostname("localhost")             .port(3306)             .databaseList("cdc_test") // set captured database, If you need to synchronize the whole database, Please set tableList to ".*".             .tableList("cdc_test.cdc_table") // set captured table             .username("root")             .password("debezium")             .includeSchemaChanges(true)             .startupOptions(StartupOptions.latest())             .deserializer(new JsonDebeziumDeserializationSchema()) // converts SourceRecord to JSON String             .build();         env.fromSource(mySqlSource, WatermarkStrategy.noWatermarks(), "MySQL-CDC")             .print();         env.execute();     } } 添加日志配置<!--   ~ Licensed to the Apache Software Foundation (ASF) under one or more   ~ contributor license agreements.  See the NOTICE file distributed with   ~ this work for additional information regarding copyright ownership.   ~ The ASF licenses this file to You under the Apache License, Version 2.0   ~ (the "License"); you may not use this file except in compliance with   ~ the License.  You may obtain a copy of the License at   ~   ~    http://www.apache.org/licenses/LICENSE-2.0   ~   ~ Unless required by applicable law or agreed to in writing, software   ~ distributed under the License is distributed on an "AS IS" BASIS,   ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.   ~ See the License for the specific language governing permissions and   ~ limitations under the License.   --> <configuration>        <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">           <encoder>              <pattern>%d{yyyy-MM-dd HH:mm:ss} %p %c - %msg %n</pattern>           </encoder>        </appender>        <root level="INFO">           <appender-ref ref="STDOUT" />        </root> </configuration>Debezium标准CDC Event格式详解{     "before": null,     "after": {         "id": 1,         "name": "xing.yu",         "age": 26,         "new_column": "dewu"     },     "source": {         "version": "1.9.7.Final",         "connector": "mysql",         "name": "mysql_binlog_source",         "ts_ms": 1702723640000,         "snapshot": "false",         "db": "cdc_test",         "sequence": null,         "table": "cdc_table",         "server_id": 223344,         "gtid": null,         "file": "mysql-bin.000003",         "pos": 2394,         "row": 0,         "thread": 39,         "query": null     },     "op": "c",     "ts_ms": 1702723640483,     "transaction": null } {     // 表数据更新前的值,update/delete     "before": {},     // 表数据更新后的值,create/update     "after": {},     // 元数据信息     "source": {},     // 操作类型 c/d/u     "op": "",     // 记录解析时间     "ts_ms": "",     "transaction": "" }Flink CDC生产casehttps://ververica.github.io/flink-cdc-connectors/master/content/%E5%BF%AB%E9%80%9F%E4%B8%8A%E6%89%8B/mysql-postgres-tutorial-zh.html

2024-11-28 17:33

80. 超哥分享Flink CDC(一)

什么是CDC?CDC(Change Data Capture)是一种用于跟踪数据库中数据更改的技术。它用于监视数据库中的变化,并捕获这些变化,以便实时或定期将变化的数据同步到其他系统、数据仓库或分析平台。CDC 技术通常用于数据复制、数据仓库更新、实时报告和数据同步等场景。CDC 可以捕获数据库中的以下类型的数据变化:插入(Insert):当新数据被插入到数据库表中时。更新(Update):当数据库表中的现有数据被修改时。删除(Delete):当数据从数据库表中被删除时什么是Flink CDCFlink CDC(Change Data Capture,即数据变更抓取)是一个开源的数据库变更日志捕获和处理框架,它可以实时地从各种数据库(如MySQL、PostgreSQL、Oracle、MongoDB等)中捕获数据变更并将其转换为流式数据。Flink CDC 可以帮助实时应用程序实时地处理和分析这些流数据,从而实现数据同步、数据管道、实时分析和实时应用等功能。本质上是一系列的Flink Source Connector集合,用于来获取数据库的实时变更,底层基于Debezium实现。https://github.com/ververica/flink-cdc-connectorsFlink CDC 前生今世Flink CDC 1.xFlink CDC 1.x开启了Flink在CDC上的实践之路,Flink CDC 1.x第一次引入了Debezium框架,利用Debezium已有的能力将数据库实时变更接入到Flink流计算框架中,利用Flink丰富的生态对数据进行加工处理,满足不同的业务需求,在功能层面上而言,Flink CDC 1.x只能说是可以用,但不能生产上用,为什么:1.x版本全增量切换时会对表加锁,在同步过程中有段时间业务会处于暂停状态各方面功能还不够完善,比如自动加表、DDL事件传递等总体而言Flink CDC 1.x只能说是一个比较有趣的小玩具,还不具备大规模商业盈利的价值。Flink CDC 2.x在2.x版本中,Flink CDC引入了Netfix DBLog中的无锁算法,彻底解决了全增量切换上业务停滞的问题,同时得益于FLIP-27对Flink Source API的重构,Flink CDC也基于FLIP-27升级到了新的框架设计,至此,Flink CDC被大规模公司使用并投入到生产中。Flink CDC 2.0 正式发布,详解核心改进-阿里云开发者社区Flink CDC 3.x流计算迎来代际变革:流式湖仓 Flink + Paimon 加速落地、Flink CDC 重磅升级_大数据_Apache Flink_InfoQ写作社区

2024-11-28 17:30

79. 0基础如何体系化学习数据仓库?

语言层面:需要选择一门编程语言(包括java python scala,这里建议选择java,课程可在b站随意搜,建议学韩顺平的 )及hive sql(hive 学习可跟着踏踏实实练sql 去学)。数据源层面:关系型数据库(这里建议MySQL),中间件(这里建议kafka ),会用即可,不需要精通到源码。计算引擎层面:需要学习离线引擎mapreduce spark 等,实时计算引擎flink ,作为数据仓库同学这里不建议学到源码级别,只需要会用,明白组件特性,清楚运行流程即可。开源组件层面:会用抽取工具完成日常数据同步(这里离线建议学sea tunnel或datax ,实时建议学flink cdc),调度工具(这里建议学dolphin scheduler或Azkaban),明白hdfs 概念及原理,了解olap其中一种即可(这里查询olap建议学impala olap库建议学Doris)云端数据平台:有条件的同学可以自己购买,当然语兴也会为星球同学准备数据平台账号使用,帮助大家了解数据平台,知道数据平台里面内容,从而可以应对未来使用数据平台的公司,语兴同时在b站也为大家准备了数据平台使用课程。数仓建设思想:跟着我b站课程-数仓建设学习路线,了解数仓日常都在做什么,数仓版图有哪些内容,如何去做。

2024-11-28 17:23

77. 数据价值对业务的帮助

原文:https://mp.weixin.qq.com/s/N_GxIZmFZOmEC85cRs-fAw前言最近语兴面试亲身体会以及从各位同学口中听到的最多问题即你做数据仓库的价值在哪,你是怎么通过数据仓库帮助业务方的 ,这几乎是社招5年及以上几乎都会问的一个问题。相信很多数据仓库开发者很难找到数据仓库对业务的价值点,因为数据仓库主要是业务支持的职能并不能像后端开发者具备直接性产出,从而导致很多数据仓库开发者无法向业务阐述清楚自己创造的价值,最终错过了更多机会。数据仓库对业务的价值可以从4个点去阐述分别是用户增长/经营性分析、数据质量/产出稳定、查数/用数提效、降低部门支出,这里都是数仓对业务价值视角阐述。用户增长/经营性分析用户增长/经营性分析即通过数据仓库建设的数据模型帮助业务方带来用户增长,是数据仓库对业务的核心价值,例如数据模型支撑了用户基础画像、用户在业务中全流程行为分析、用户在消费行为中表现情况等,通过数据模型帮助业务能够快速定位未来活动、未来业务走向等,为业务在拉新、促活、挽留等方面提供精准流量(而非原有广告投放导致流量较为广泛,定位不精准),在此处数据仓库帮助业务达到了用户规模增长,从原有规模增长到现有规模(例如5000万用户增长到8000万)、为业务新的经营分析场景,为业务带来规模性营收(例如金额收益增长40%+),对于数据仓库同学来说,可以从数据表中查询已知的增长规模,还需要和业务方确认增长的方向和其他数据。数据质量/产出稳定数据质量/产出稳定更多的价值在于提供的数据能让业务方使用的安心无忧,如果数据质量问题经常被业务反馈、每天都无法提供数据给业务因果难过,那业务方对于数据仓库的依赖会逐渐降低,丧失用数信心,因此稳定数据质量及任务产出也较为重要,此处的价值可从原有数据质量问题触发情况与现有情况进行比对,问题触发降低了多少等(例如每个月下游反馈40-50bug 现在降低每个月下游反馈7个bug),任务产出这里也可以从基线/SLA破线无法交付次数降低了多少去评价(每周5次破线降至每周小于等于1次破线),同时还需要做数据质量问题质量可视化监控看板提供给业务方查看,并按照周/月形式进行定期邮件反馈。查数/用数提效查数/用数提效为业务方提升了更快的效率,能够快速找到并使用数据,在这里数据仓库侧需要对元数据维护、定制相关提效数据服务(数据资产门户、指标中心、ONE-ID等),通过数据服务以及元数据维护将查数/用数成本降低,将原业务方几小时查询及询问时长降低至分钟内自助查询定位(例如原来业务方自己找数据表 查询指标要3小时,现在能够实现自助查询,并能再5分钟内定位),极大降低了成本,同时减少了数据仓库侧问题答疑次数,达到快速定位效果。降低部门支出由于数据仓库任务及数据表日积月累式增长导致计算及存储的费用不断提升,从而增加部门整体费用(例如计算/存储金额从3000万降低至2100万等),通过数据治理或数据技术架构更换,帮助业务降低整体支出,为部门节省整体开支。

2024-11-14 9:41

讲讲数据开发修炼手册和星球的区别

小册定位小册主要是Q&A形式,收集整理了粉丝群常见的数据开发问题和解答。适合快速查找和学习某个具体问题,小册订阅朋友可以当成日报来看,探讨日常开发中存在的一些问题,你是否碰见过,交流开发经验~~星球定位星球定位更加深入和系统:完整的真实项目案例分析(y shopping真实场景电商项目,y life本地生活项目,y ruleEngine 实时风控引擎项目)简历优化和面试辅导(免费1次1V1辅导,仅面试辅导就超过星球价值)职业发展规划建议(从应届如何成大为数据领域大牛)每周的全领域课程定位(从java基础,大数据基础,到简历项目全域覆盖)定期的技术分享和答疑(每周的分享)定期的模拟面试(直播答疑时可以主动报名)全30余套+简历项目简单来说可以把小册理解为"工具书"。而星球是更全面的"成长计划"。两者是互补的关系,小册帮您解决具体问题,星球则会助你在职业发展上有更大提升,在数据领域,一个人可以走的很快,但一群人会陪你走的更远!送小册粉丝一张专属大额优惠券(远超普通粉丝,普通粉丝基础优惠50元):