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

    脚本任务编写大致如下

     

  • 相关阅读:
    mybatis-config.xml详解
    过滤器与拦截器
    Tomcat 部署web 项目
    Tomcat架构
    git stash
    AbstractQueuedSynchronizer 源码解读(转载)
    Kafka 转载
    Oracle数据库TNS详解
    Oracle建表知识全面详解
    Oracle高级教程
  • 原文地址:https://www.cnblogs.com/GoCircle/p/12557873.html
Copyright © 2020-2023  润新知