zoukankan      html  css  js  c++  java
  • kettle转换之多线程

    kettle转换之多线程

     

           ETL项目中性能方面的考虑一般是最重要的。特别是所讨论的任务频繁运行,或一些列的任务必须在固定的时间内运行。本文重点介绍利用kettle转换的多线程特性。以优化其性能。

           如果转换中的每一个步骤已经设置成最快的运行速度而且调节性能至最佳,且再没有很多其它的性能提升空间。可是利用kettle的多线程特性仍然可能提升转换的总体性能。

    调整队列大小

           当尝试优化性能时。你能够调整输入、输出队列的大小。特别是假设你有足够多的内存(RAM)可用。

    在kettle转换中配置队列大小是转换配置中的“Nr of rows in rows”选项的大小,其配置对转换中全部的步骤都有效。

    添加可使转换更快运行完活动的步骤,从而释放CPU时间给兴许步骤。针对特定转换调节合适大小最佳实践。

     

    设置步骤运行拷贝数

           kettle转换在执行时,每一个步骤可被看成一个带着输入、输出行队列的工作线程,每一个线程是并行执行的,当数据化是有效时即处理。

    kettle同意针对每一个独立步骤手工定义其线程数。

    假设转换有一个瓶颈步骤,该步骤有多个实例同一时候执行能够加快处理速度。能够通过检查每一个步骤的输入、输出队列及行/秒的处理性能找到候选的瓶颈步骤。假设某步骤有满输入队列,空输出队列,并每秒处理行数低。这些因素往往决定了整个转换的性能,从而找到瓶颈步骤。

    这些因素的数据在kettle执行“Step Metrics”视图中能够看到。


           右击问题步骤,选择“change number ofcopies to start..”并输入合适的线程数,这时当你执行转换时。你将注意到多个执行的实例。每一个实例在视图中有自己的输入、输出队列。

           转换的总体性能提升取决于每一个步骤的性能及操作系统和硬件性能。

    如:假设cpu性能强,“计算”步骤性能就佳;数据库查询步骤能够通过多线程提升性能;其它步骤如”update“步骤不太可能提升性能,可是和RDBMS有非常多关系。

           须要注意的是步骤启用多线程也有它的局限性。

    更详细地。假设问题的步骤中或之后。依赖全部数据行的排列顺序时。该转换将不能正确的执行。每一个步骤的多个线程都独立地接收并处理他们的数据行,因此不能保证全部数据行驶按顺序处理。另外须要提醒的是,每一个线程保持自己的独立内部状态,并不能看到其它线程正处理的行。因此,假设某个步骤必须看到全部的行。才干正常工作,那一定不能使用多线程。”Sort rows”, “Unique rows” 和 “Rowdenormalizer”就是最好的样例。这这些步骤使用多线程是没有意义的。由于每一个线程处理行不过全部行的一个子集。

    结论

           kettle同意转换中的每一个单独定义多个线程运行。同一时候能够也设置输入、输出队列大小。两个特性对提升运行速度很实用。针对单个步骤启动多线程,两点事实须要考虑的是,每一个线程不能看到整个数据行,且每一个线程处理行顺序不确定。

  • 相关阅读:
    js 压缩 预览 上传图片
    js base64 转成图片上传
    支付宝扫码转账
    js网页 唤醒支付宝
    URL 生成带文字二维码
    iOS-语言本地化
    iOS-Storyboad动态刷新
    iOS-UITouch,UIEvent使用介绍
    JSP-标准动作标记
    JSP-注释,脚本元素,指令
  • 原文地址:https://www.cnblogs.com/gavanwanggw/p/6789217.html
Copyright © 2011-2022 走看看