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集群配置错误导致的写超时。

链接【写超时异常】

链接2

集中在配置文件修改方面,示例修改如下:

read_request_timeout_in_ms  增大

write_request_timeout_in_ms  增大

GROUPTRANSOPS 减小

 SSIS工具

在kingswaysoft官网介绍中, 对Cassandra目标组件的异步模式介绍简短。

官网链接【使用Cassandra目标组件】

Youtube【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目标组件。 

脚本任务编写大致如下

 

 

 

 

 

posted @   听雨的人  阅读(281)  评论(0编辑  收藏  举报
努力加载评论中...
点击右上角即可分享
微信分享提示