共计 2864 个字符,预计需要花费 8 分钟才能阅读完成。
概述
taskctl 是一款国内开源的 ETL 工具,纯 C 编写,可以在 Window、Linux、Unix 上运行。
说白了就是,很有必要去理解一般 ETL 工具必备的特性和功能,这样才更好的掌握 taskctl 的使用。
今天主要先描述 ETL 工具的通用功能。
ETL 工具的功能之一:连接
任何 ETL 工具都应该有能力连接到类型广泛的数据源和数据格式。对于最常用的关系型数据库系统,还要提供本地的连接方式(如对于 Oracle 的 OCI),ETL 应该能提供下面最基本的功能:
连接到普通关系型数据库并获取数据,如常见的 Orcal、MS SQL Server、IBM DB/2、Ingres、MySQL 和 PostgreSQL。还有很多很多从有分隔符和固定格式的 ASCII 文件中获取数据从 XML 文件中获取数据从流行的办公软件中获取数据,如 Access 数据库和 Excel 电子表格使用 FTP、SFTP、SSH 方式获取数据(最好不用脚本)还能从 Web Services 或 RSS 中获取数据。如果还需要一些 ERP 系统里的数据,如 Oracle E-Business Suite、SAP/R3、PeopleSoft 或 JD/Edwards,ETL 工具也应该提供到这些系统的连接。还能提供 http://Salesforce.com 和 SAP/R3…,但不是套件内,需要额外安装。对于其他 ERP 和财务系统的数据抽取还需要其他解决方案。当然,最通用的方法就是要求这些系统导出文本格式的数据,将文本数据作为数据源。
ETL 工具的功能之二:平台独立
一个 ETL 工具应该能在任何平台下甚至是不同平台的组合上运行。一个 32 位的操作系统可能在开发的初始阶段运行很好,但是当数据量越来越大时,就需要一个更强大的操作系统。另一种情况,开发一般是在 Windows 或 Mac 机上运行的。而生产环境一般是 Linux 系统或集群,你的 ETL 解决方案应该可以无缝地在这些系统间切换。
ETL 工具的功能之三:数据规模
一般 ETL 能通过下面的 3 种方式来处理大数据。
- 并发:ETL 过程能够同时处理多个数据流,以便利用现代多核的硬件架构。
- 分区:ETL 能够使用特定的分区模式,将数据分发到并发的数据流中。
- 集群:ETL 过程能够分配在多台机器上联合完成。
Kettle 是基于 Java 的解决方案,可以运行在任何安装了 Java 虚拟机的计算机上(包括 Windows、Linux 和 Mac)。转换里的每个步骤都是以并发的方式来执行,并且可以执行多次,这样加快了处理速度。
Kettle 在运行转换时,根据用户的设置,可以将数据以不同的方式发送到多个数据流中(有两种几本发送方式:分发和复制)。分发类似与分发扑克牌,以轮流的方式将每行数据只发给一个数据流,复制是将每行数据发给所有数据流。
为了更精确控制数据,Kettle 还使用了分区模式,通过分区可以将同一特征的数据发送到同一个数据流。这里的分区只是概念上类似于数据库的分区。
Kettle 并没有针对数据库分区有什么功能。
ETL 工具的功能之四:设计灵活性
一个 ETL 工具应该留给开发人员足够的自由度来使用,而不能通过一种固定的方式来限制用户的创造力和设计的需求。ETL 工具可以分为基于过程的和基于映射的。
基于映射的功能只在源数据和目的数据之间提供了一组固定的步骤,严重限制了设计工作的自由度。基于映射的工具一般易于使用,可快速上手,但是对于更复杂的任务,基于过程的工具才是组好的选择。
使用 Kettle 这样基于过程的工具,根据实际的数据和也许需求,可以创建自定义的步骤和转换。
ETL 工具的功能之五:复用性
设计完的 ETL 转换应该可以被复用,这是非常重要的。复制和粘贴已经存在的转换步骤是最常见的一种复用,但这不是真正意义上的复用。
taskctl 里有一个映射(子转换)步骤,可以完成转换的复用,该步骤可以将一个转换作为其他转换的子转换。另外转换还可以在多个作业里多次使用,同样作业也可以为其他作业的子作业。
ETL 工具的功能之六:扩展性
大家都知道,几乎所有的 ETL 工具都提供了脚本,以编程的方式来解决工具本身不能解决的问题。另外,还有少数几款 ETL 工具可以通过 API 或其他方式为工具增加组件。使用脚本语言写函数,函数可以被其他转换或脚本调用。
Kettle 提供了上述的所有功能。Java 脚本步骤可以用来开发 Java 脚本,把这个脚本保存为一个转换,再通过映射(子转换)步骤,又可以变为一个标准的可以复用的函数。实际上,并不限于脚本,每个转换都可以通过这种映射(子转换)方式来复用,如同创建了一个组件。Kettle 在设计上就是可扩展的,它提供了一个插件平台。这种插件架构允许第三方为 Kettle 平台开发插件。
Kettle 里的所有插件,即使是默认提供的组件,实际上也都是插件。内置的第三方插件和 Pentaho 插件的唯一区别就是技术支持。假设你买了一个第三方插件(例如一个 SugarCRM 的连接),技术支持由第三方提供,而不是由 Pentaho 提供。
ETL 工具的功能之七:数据转换
ETL 项目很大一部分工作都是在做数据转换。在输入和输出之间,数据要经过校验、连接、分隔、合并、转置、排序、合并、克隆、排重、过滤、删除、替换或者其他操作。
在不同机构、项目和解决方案里,数据转换的需求都大不相同,所以很难说清一个 ETL 工具最少应该提供哪些转换功能。
但是呢,常用的 ETL 工具(包括 taskctl)都提供了下面一些最基本的整合功能:
- 缓慢变更维度
- 查询值
- 行列转换
- 条件分隔
- 排序、合并、连接
- 聚集
ETL 工具的功能之八:测试和调试
测试通常分为黑盒测试(也叫功能测试)和白盒测试(结构测试)。
黑盒测试,ETL 转换就被认为是一个黑盒子,测试者并不了解黑盒子的功能,只知道输入和期望的输出。
白盒测试,要求测试者知道转换内部的工作机制并依此设计测试用例来检查特定的转换是否有特定的结果。
调试实际是白盒测试中的一部分,通过高度可以让开发者或测试者一步一步地运行一个转换,并找出问题的所在。
ETL 工具的功能之九:血统分析和影响分析
任何 ETL 工具都应该有一个重要的功能:读取转换的元数据,它是提取由不同转换构成的数据流的信息。
血统分析和影响分析是基于元数据的两个相关的特性。
血统是一种回溯性的机制,它可以查看到数据的来源。
影响分析是基于元数据的另一种分析方法,可以分析源数据对随后的转换以及目标表的影响。
ETL 工具的功能之十:日志和审计
数据仓库的目的就是要提供一个准确的信息源,因此数据仓库里的数据应该是可靠的、可信任的。为了保证这阵可靠性,同时保证可以记录下所有的数据转换操作,ETL 工具应该提供日志和审计功能。
日志可以记录下在转换过程中执行了哪些步骤,包括每个步骤开始和结束时间戳。
审计可以追踪到对数据做的所有操作,包括读行数、转换行数、写行数。
对啦,我们的公众号 “敏捷调度 taskctl”(ID:gh_79ababc7910b) 长期更新互联网最新资讯、行业内职场趣闻、以及有趣且实用性较高的编程插件和开发框架知识分享之类的,
如果你开心的话可以关注一下下呢!期待(๑˙ー˙๑)