kettle转换之多线程

 

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

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

调整队列大小

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

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

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

watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvbmV3ZWFzdHN1bg==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast" alt="">

设置步骤运行拷贝数

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

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

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

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

watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvbmV3ZWFzdHN1bg==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast" alt="">

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

watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvbmV3ZWFzdHN1bg==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast" alt="">

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

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

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

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

结论

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

kettle转换之多线程的更多相关文章

  1. kettle转换提高性能拆分转换步骤_20161201

    今天是12月1号,前期用kettle做了月报自动报表的转换和作业,今天运行时候发现一个报表的程序跑起来失败,心里很纳闷,上过月刚跑的没问题,怎么会无缘无故的失败. 通过看kettle运行日志,发现一个 ...

  2. Java线程Thread的状态解析以及状态转换分析 多线程中篇(七)

    线程与操作系统中线程(进程)的概念同根同源,尽管千差万别. 操作系统中有状态以及状态的切换,Java线程中照样也有. State 在Thread类中有内部类 枚举State,用于抽象描述Java线程的 ...

  3. kettle转换添加hbase-output无法获取hbase表

    问题:kettle转换添加hbase-output无法获取hbase表 win本机安装kettle,本机虚拟机三台,root用户安装有jdk.zookeeper.hadoop.hbase kettle ...

  4. java中调用kettle转换文件

    java中调用kettle转换文件 通过命令行也能够调用,然后java中调用命令行代码也能够.这样没有和java代码逻辑无缝集成.本文说明kettle5.1中假设通过其它API和java代码无缝集成: ...

  5. kettle转换和作业插件开发及调试

    这是一篇几年前写下的文档,最近打算根据这篇文档重写一下kettle插件的教程.结果各种理由,一推再推.今天索性将这篇文档发布出来,分享给大家,例子等有空再补上.这是一篇基于kettle3.2基础上完成 ...

  6. kettle转换JavaScript获取命令行参数

    日常开发中由于很多参数是变化的,需要在部署时才能确定.而写在配置文件里又显得很笨重,因而可以运行时实时指定.那么kettle是怎么获取命令行中的参数的呢? kettle可以通过转换里的JavaScri ...

  7. 使用kettle转换中的JavaScript对密码进行加密和解密

    日常开发中,为了确保账号和密码的安全,时常要对密码进行加密和解密.然而kettle是怎么对密码进行加密和解密的呢? 下面的代码需要再转换中的JavaScript中运行. var encrypted_p ...

  8. kettle菜鸟学习笔记2----第一个kettle转换的建立及执行

    相关概念: Kettle数据清洗是采用元数据(Meta-data)驱动,以数据流的方式进行的,数据从数据源(数据库/文件等)在一系列相连的step之间依次向后流动,各个step完成对流经该step的数 ...

  9. Kettle转换工具Windows版安装

    一.简介 Kettle是一款国外开源的ETL工具,纯java编写,可以在Window.Linux.Unix上运行,绿色无需安装,数据抽取高效稳定. Kettle 中文名称叫水壶,该项目的主程序员MAT ...

随机推荐

  1. BZOJ-2618 [CQOI2006]凸多边形

    半平面交模版题.. #include <cstdlib> #include <cstdio> #include <cmath> #include <cstri ...

  2. 解决ie8下页面刚出现时候的晃动问题

    出现这个问题的原因的页面的高度超过一屏,这个时候需要在开始的时候给 html,body {overflow:scroll;overflow-x:hidden}; 这样就可以解决这个问题了

  3. 转:java native

    今日在hibernate源代码中遇到了native关键词,甚是陌生,就查了点资料,对native是什么东西有了那么一点了解,并做一小记. native关键字说明其修饰的方法是一个原生态方法,方法对应的 ...

  4. 球形空间产生器sphere(bzoj 1013)

    Description 有一个球形空间产生器能够在n维空间中产生一个坚硬的球体.现在,你被困在了这个n维球体中,你只知道球面上n+1个点的坐标,你需要以最快的速度确定这个n维球体的球心坐标,以便于摧毁 ...

  5. 【NOIP2009】最优贸易

    描述 C 国有 n 个大城市和 m 条道路,每条道路连接这 n 个城市中的某两个城市.任意两个城市之间最多只有一条道路直接相连.这 m 条道路中有一部分为单向通行的道路,一部分为双向通行的道路,双向通 ...

  6. 排名次SQL语句【名次可重复时】

    原文发布时间为:2008-10-26 -- 来源于本人的百度文章 [由搬家工具导入] 功能实现 名次可重复时,比如第一名有两个。。。 select   *,(select   count(distin ...

  7. scrapy实战

    采用scrapy实现对股票网站的爬取 功能描述: 技术路线:scrapy 目标:获取上交所和深交所所有股票名称和交易信息并存储 实例编写: 步骤1:建立工程和spider爬虫模板 步骤2:编写spid ...

  8. APP漏洞扫描用地址空间随机化【转】

    转自:http://www.cnblogs.com/alisecurity/p/6141575.html 前言 我们在前文<APP漏洞扫描器之本地拒绝服务检测详解>了解到阿里聚安全漏洞扫描 ...

  9. 处理printf的变参问题

    VA_LIST 是在C语言中解决变参问题的一组宏,所在头文件:#include <stdarg.h> (1)首先在函数里定义一具VA_LIST型的变量,这个变量是指向参数的指针: (2)然 ...

  10. steam linux 使用socks代理

    环境:Ubuntu 15.10 64bit,Steam:built:May 10 2016 需要的工具:ssh/shadowsocks等socks5代理,tsocks ---------------- ...