SSIS SQLServer增量抽取至Cassandra 性能优化及踩坑
前言
做增量抽取时使用的KingswaySoft公司提供的组件,方便易用,但是在快速编写完后进行数据量测试时,仅100条数据就可使程序报错,错误如下
[Cassandra Destination [2]] 错误: 出现错误,错误消息如下:“Cassandra.WriteTimeoutException: Cassandra timeout during write query at consistency SERIAL (1 replica(s) acknowledged the write over 4 required) (SSIS Productivity Pack, v10.0.0.3034 - DtsDebugHost, v13.0.4259.0)”。
因此进行SSIS配置查找和性能优化。
排查
对此问题进行Cassndra和SSIS两个方面的排查。
Cassandra配置排查
首先进行Cassandra的错误排查,网上对于此问题也归类为Cassandra集群配置错误导致的写超时。
集中在配置文件修改方面,示例修改如下:
read_request_timeout_in_ms 增大
write_request_timeout_in_ms 增大
GROUPTRANSOPS
减小
SSIS工具
在kingswaysoft官网介绍中, 对Cassandra目标组件的异步模式介绍简短。
使用CDATA工具开发,需购买授权。放弃。
使用Cassandra ODBC提供程序
使用脚本任务插件替代Cassandra目标组件。
分析
对如上排查方案进行验证。
Cassandra
Cassandra的write_request_timeout_in_ms 配置增大确实可以使SSIS少量数据不报错,但是数据量在千条时还是会报同样的错误,因此排除是Cassandra集群配置的原因。
GROUPTRANSOPS
这个配置未找到。
SSIS工具
kingswaysoft
将Cassandra目标组件中【异步模式】取消勾选进行测试,发现抽取一千条数据不会报错,但是速度很慢(仅为60条/秒)。
对kingswaysoft官方提供的资料中进行了解,发现官方仅对【异步模式】进行了简述:可快速插入数据。
因kingswaysoft提供的Cassandra目标组件不提供自定义编辑,所以进行其他可替代免费组件的查找。
CDATA
网上有关于CDATA的工具,但是收费,放弃。
Cassandra ODBC
使用Cassandra ODBC提供程序进行配置时,会报错。具体错误信息未记录。
大概内容是安装64位版本程序后,使用数据源进行访问数据库报错误为需要使用32位数据源进行操作。
在使用32位提供程序后,不能进行数据库操作。
这里也不推荐使用ODBC提供程序,因为能下载到程序就很不容易了。
脚本任务
这种方法是最笨但是最有效的方案。
直接在数据流中配置好ODBC数据源,然后指向脚本任务就可以获取到ODBC源所获取到的数据条目。
设置输入列,如果有输出也可设置输出列。
然后和编写程序一样去创建连接插入数据。
方案
采用脚本任务替换Cassandra目标组件。
脚本任务编写大致如下
By听雨的人
【推荐】还在用 ECharts 开发大屏?试试这款永久免费的开源 BI 工具!
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步