spark实时监控sqlserver文件方法(追踪~增删改查)

前言

本方法仅为个人一时脑洞成果,因此可能会存在不少瑕疵(虽然我还没遇到)请读者如果遇到bug时见谅(不装谦虚了,这样说话好累).经检验是在数据变化量不是很高时可以正常运行.至于该方法可以承受数据量阈值并未测试,欢迎各位读者自行测试,如果测出结果的话,欢迎您在留言处发布!!

本文主要分下面两大块:

1.思路模块

2.实现模块

思路

Spark对SQLserve监控一旦不单只有增量监控(指增删改查全要监控)后,据我所知,目前就我个人想法只有两方面入手

一个是不断遍历该表然后新表对比后表,即可准实时实现变化追踪,这样的实现方法最简单,但其消耗资源与时间是非常严重的.尤其当源表十分庞大时,这做法就显得相当不理智了.(其实这方法本来就不理智)

第二个则是利用SQLserver的CDC功能让其自主监控源表并生成一个只会出现增量变化的CDC表,通过 flume-ng-sql-source(这是一个大咖自主写的  第三方flume中source组件)    flume-kafka监控该表并传至spark进行分析

实现

1.开启代理服务器。

SqlServer启用CDC功能必须开启代理服务器!!!

SqlServer启用CDC功能必须开启代理服务器!!!

SqlServer启用CDC功能必须开启代理服务器!!!

具体开启流程请参考以下链接

https://blog.csdn.net/weixin_42179685/article/details/89873946

2.创建CDC表

本次范例源表为test库里的table1表

1.开启数据库的监控功能

检测源表所在数据库是否开启监控,因为想监控源表必须先开启源表所在数据库的监控 

命令为

select name,is_cdc_enabled from sys.databases

从上图我们可以看到test库状态为0,即未开启监控。因此需要我们转到库下开启监控

use test
go
exec sp_cdc_enable_db
select name,is_cdc_enabled from sys.databases

我们可以看到test状态由0成功变成1,说明我们已开启test库的监控功能

2.设置监控表

输入以下命令

use test
exec sp_cdc_enable_table
	@source_schema = 'dbo',
	@source_name = 'table1',
	@role_name = cdc_admin,
	@index_name = NULL,
	@supports_net_changes = 1

运行,我们便会看到以下画面

 

 

说明我们监控文件创建成功,刷新test数据库我们可以看到

可以看到在系统表中生成一个cdc.dbo_table1_CT的监控表,

                                                                                          源表table1格式                                          

                                                                                             监控表table1_CT

 

当我我们在table1中添加新内容如 id 18   name 蔡徐坤打篮球      

                                                                                                   table1

 

                                                                                     table1_CT

可见监控表成功追踪到了我们的增量操作,如何在该表查看我们的操作状态呢?在_$operation列中可以查看

1 = delete,2 = insert,3 = update(旧值),4 = update(新值)。

注增加或删除操作只会增添一行,而修改则会增添2行,第一行为旧值而第二行为修改的新值

3.flume中添加第三方包

我们都知道flume是一个非常好的监控工具,但是flume官网里并没有找到可以直接连接SQLserver功能,因此我们需要自行添加该功能的工具包flume-ng-sql-source

 

待续~~~~

福利

这是连SQLServer的依赖!!!!!!!!

<dependency>
    <groupId>com.microsoft.azure</groupId>
    <artifactId>azure-sqldb-spark</artifactId>
    <version>1.0.2</version>
</dependency>

 

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值