| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 大数据 -> 实时数仓架构哪些事儿(续13-PostgreSQL CDC数据实时接入Kudu) -> 正文阅读 |
|
[大数据]实时数仓架构哪些事儿(续13-PostgreSQL CDC数据实时接入Kudu) |
书接前文,在上一节中,我们将Mysql CDC数据实时接入了Impala Kudu表。完整的数据流向如下图所示: 图中MYSQL和SQLSERVER数据库的CDC数据采集,在本系列中已经讲解,本节给大家分享下PostgreSQL数据库的CDC数据采集和DDL监控。在正式进行实战操作之前,请先学习Mysql连接器的使用方法,因为很多的配置都是相同的。本文主要解释下PostgreSQL连接器特有的内容。再次提醒:要理解这套实时数仓架构的思路和落地方法,请通读本系列文章。 我们首先了解下PostgreSQL的Debezium连接器。 0. PostgreSQL的Debezium连接器 本部分内容译自官网,使用任何数据库的Debezium连接器之前,建议大家先阅读下相应连接器的官网说明,可以事半功倍。 Debezium PostgreSQL连接器捕获PostgreSQL数据库模式中的行级更改。有关与连接器兼容的PostgreSQL版本的信息,请参阅Debezium发布概述。 当第一次连接到PostgreSQL服务器或集群时,连接器获取所有模式的一致快照。快照完成后,连接器将持续捕获插入、更新和删除数据库内容以及提交到PostgreSQL数据库的行级更改。连接器生成数据更改事件记录,并将它们传输到Kafka主题。对于每个表,默认的行为是连接器将所有生成的事件流传输到该表的单独Kafka主题。应用程序和服务消费来自该主题的数据更改事件记录。 PostgreSQL的逻辑解码( logical decoding)特性是在9.4版引入的。它是一种机制,允许提取提交到事务日志的更改,并在输出插件的帮助下以用户友好的方式处理这些更改。输出插件允许客户端消费更改。 PostgreSQL连接器包含两个主要部分,它们一起工作来读取和处理数据库更改:
连接器为捕获的每一个行级插入、更新和删除操作生成一个更改事件,并为单独Kafka主题中的每个表发送更改事件记录。客户端应用程序读取与感兴趣的数据库表对应的Kafka主题,并可以对从这些主题接收到的每一个行级事件做出反应。 PostgreSQL通常在一段时间后清除预写日志(write-ahead log, WAL)段。这意味着连接器没有对数据库所做的所有更改的完整历史。因此,当PostgreSQL连接器第一次连接到一个特定的PostgreSQL数据库时,它首先对每个数据库模式执行一致的快照。在连接器完成快照之后,它将继续从创建快照的确切点开始流化更改。通过这种方式,连接器从所有数据的一致视图开始,并且不会忽略在创建快照时所做的任何更改。 这个连接器可容忍故障。当连接器读取更改并产生事件时,它会记录每个事件的WAL位置。如果连接器因任何原因(包括通信故障、网络问题或崩溃)而停止,那么在重新启动时,连接器将继续在它最后停止的位置读取WAL。这包括快照。如果连接器在快照期间停止,则在重新启动时连接器将开始一个新的快照。
对Debezium连接器的机制有个大概了解,现在可以动手配置了。 1. 前置条件
2. 配置并创建连接器
创建连接器步骤同Mysql连接器。在表t_person中增改删数据,查看topic中的消息格式:
可以看出,消息格式和MySQL连接器的消息格式基本一致。上面是一个删除操作的消息格式,before对应的json对象中,只有主键id有值,其他字段值都是?null?。这是因为pg默认只会复制主键值,通过修改表的复制模式可以解决这个问题:???????
再次测试,消息内容如下:???????
下一步就是将这些增删改消息接入impala kudu表,具体NIFI任务的创建过程,见前一节的详细描述。 3. PG的DDL监控 PG连接器无法监控DDL的变更。在实际项目中,DDL变更的监控可能非常重要,如何解决这个问题呢?这里给大家提供一种解决方式,供参考:创建触发器,监控DDL变更,将变更信息写入一张表中,监控这张表即可,如可以将此表配置到PG连接器中。 具体方式如下:???????
通过添加字段、删除字段、修改字段类型,测试上述方式。 这种方式不好的一点是:具有侵入性。如果采集的是第三方PG数据库,需要征求同意,在对方库中创建触发器。 你是否有更好的方法?加我微信,一起讨论下。 登峰大数据 专注大数据技术分享;Spark技术实战;大数据英文技术书籍的中文版独发以术会友 219篇原创内容 公众号 |
|
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2025年5日历 | -2025/5/1 23:24:05- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |