【转载】用 IBM WebSphere DataStage 进行数据整合:第 1 部分
原文地址:http://www.ibm.com/developerworks/cn/data/library/techarticles/dm-0602zhoudp/
数据整合的核心内容是从数据源中抽取数据,然后对这些数据进行转化,最终加载的目标数据库或者数据仓库中去,这也就是我们通常所说的 ETL 过程。IBM WebSphere DataStage 为整个 ETL 过程提供了一个图形化的开发环境。
传统的数据整合方式需要大量的手工编码,而采用 IBM WebSphere DataStage 进行数据整合可以大大的减少手工编码的数量,而且更加容易维护。数据整合的核心内容是从数据源中抽取数据,然后对这些数据进行转化,最终加载的目标数据库或者数据仓库中去,这也就是我们通常所说的ETL过程。IBM WebSphere DataStage 为整个 ETL 过程提供了一个图形化的开发环境。本文将从以下几个方面来介绍 IBM WebSphere DataStage:
1. 数据源连接能力
2. 完备的开发环境
3. ETL Job 的并行执行能力
4. 开发一个简单的 ETL Job
数据整合工具的数据源连接能力是非常重要的,这将直接决定它能够应用的范围。IBM WebSphere DataStage 能够直接连接非常多的数据源,包括:
1、 文本文件
2、 XML 文件
3、 企业应用程序,比如 SAP、Siebel、Oracle 以及PeopleSoft
4、 几乎所有的数据库系统,比如 DB2、Oracle、SQL Server、Informix等
5、 Web services
6、 WebSphere MQ
正是因为这么好的连接能力,IBM WebSphere DataStage 使用户能够专注于数据转换的逻辑而不用太担心数据的抽取和加载。
IBM WebSphere DataStage 的开发环境是基于 C/S 模式的,通过 DataStage Client 连接到DataStage Server 上进行开发。这里有一点需要注意,DataStage Client 只能安装在 Windows 平台上面。而 DataStage Server 则支持多种平台,比如 Windows、Redhat Linux、AIX、HP-UNIX。
DataStage Client 有四种客户端工具。分别是 DataStage Administrator、DataStage Designer、DataStage Manager、DataStage Director。接下来首先介绍这几种客户端工具在 DataStage 架构中所处的位置以及它们如何协同工作来开发 ETL Job 的,接着再分别详细介绍每个工具的功能。
图 1 描述了 IBM WebSphere DataStage 的整个系统架构。DataStage 的客户端工具连接到DataStage Server 上进行 ETL Job 的开发,DataStage Server 再与后台的数据库连接起来进行数据处理。DataStage 的客户端工具之间的是一个相互合作的关系。下面通过介绍 ETL Job的开发过程来介绍他们之间的这种关系。
1. 用 DataStage Administrator 新建一个项目;
2. 用 DataStage Designer 连接到这个新建的项目上进行ETL Job的设计;
3. 用 DataStage Director 对设计好的ETL Job设置运行的模式,比如多长时间运行一次ETL Job;
4.用 DataStage Manager 进行ETL Job的备份等。
图 1:IBM WebSphere DataStage 架构图
DataStage Administrator 的主要功能有以下几个:
1. 设置客户端和服务器连接的最大时间。
以管理员的身份登陆 DataStage Administrator。你就会看到如下图所示的画面。在这里你可以设置客户端和服务器的最大连接时间,默认的最大连接时间是永不过期。最大连接时间的意思就是如果客户端和服务器的连接时间超过了最大连接时间,那么客户端和服务器之间的连接将被强行断开。
2. 添加和删除项目
在 Projects 这个标签中,可以新建或者删除项目,以及设置已有项目的属性。这里有必要介绍一下项目的概念,要用 DataStage 进行 ETL 的开发,首先就要用 DataStage Administrator 新建一个项目,然后在这个项目里面进行 ETL Job 的开发。
3. License的管理
可以在Licensing标签中更新License。
DataStage Designer是ETL Job开发的核心环境。值得注意的是,登陆DataStage Designer 的时候,不仅要指定DataStage Server 的IP,而且要指定连接到这个DataStage Server上的哪个项目上面,上面已经提到DataStage的项目是由DataStage Administrator 来创建的。DataStage Designer的主要功能可以概括为以下三个方面:
1. ETL Job的开发
DataStage Designer里面包含了DataStage为ETL开发已经构建好的组件, 主要分为两种,一种是用来连接数据源的组件,另一种是用来做数据转换的组件。利用这些组件,开发人员可以通过图形化的方式进行ETL Job的开发。
2. ETL Job的编译
开发好ETL Job后,可以直接在DataStage Designer里面进行编译。如果编译不通过,编译器会帮助开发人员定位到出错的地方。
3. ETL Job的执行
编译成功后,ETL Job就可以执行了,在DataStage Designer里面可以运行ETL Job。ETL Job的运行情况可以在DataStage Director中看到,这方面的内容将在介绍DataStage Director的时候提到。
DataStage Manager主要用来管理项目资源。一个项目可能包含多个ETL Job,可以用DataStage Manager把一个项目里面的ETL Job导出来。然后再用DataStage Manager导入到另外一个项目中去,利用这个功能一方面可以实现ETL Job的备份,另一方面就是可以在多个项目之间来重复使用开发好的ETL Job。在DataStage Manager里面可以把数据库中的表结构直接导入到项目中来,供这个项目中的所有ETL Job使用。DataStage Designer也提供了从数据库中直接导入表结构的功能。
DataStage Director 主要有以下两个功能:
1. 监测ETL Job的运行状态
ETL Job在DataStage Designer中编译好后,可以通过DataStage Director来运行它。前面在介绍DataStage Designer的时候提到在DataStage Designer中也可以运行ETL Job,但是如果要监测ETL Job的运行情况还是要登陆到DataStage Director中。在这里,你可以看到ETL Job运行的详细的日志文件,还可以查看一些统计数据,比如ETL Job每秒所处理的数据量。
2. 设置何时运行ETL Job
ETL Job开发完成后,我们可能希望ETL Job在每天的某个时间都运行一次。DataStage Director为这种需求提供了解决方案。在DataStage Director中可以设置在每天、每周或者每月的某个时间运行ETL Job。
ETL Job的并行执行是IBM WebSphere DataStage企业版的一大特色。ETL Job开发好以后,可以在多台装有DataStage Server的机器上并行执行,这也是传统的手工编码方式难以做到的。这样,DataStage就可以充分利用硬件资源。而且,当你的硬件资源升级的时候也不用修改已经开发好的ETL Job,只需要修改一个描述硬件资源的文件即可。并行执行能力是DataStage所能处理数据的速度可以得到趋近于线性的扩展,轻松处理大量数据
。我们将要开发一个非常简单的ETL Job,使大家对用DataStage进行ETL开发有一个总体的认识。将要开发的ETL Job是把DB2数据库Source中的表employee的内容导入到另外一个DB2数据库Target中的表employee中去。其中两个数据库中的employee表的结构是相同的。employee表的结构为:
这里需要说明的是,DB2数据库的Client端必须和DataStage Server装在同一台机器上面。如果要连接的DB2数据库的Server和DataStage Server不在同一台机器上面,那么就需要先用和DataStage Server装在同一台机器上的DB2的Client端提供的工具"配置助手"把要连接的数据库添加到DB2的Client端当中。这就为DataStage连接该数据库做好了准备。另外一点需要注意的是,如果你的DataStage Server是安装在Windows上的,那么做完上面所描述的事情后就可以用DataStage连接DB2数据库了,但是如果你的DataStage Server是安装在Linux或者Unix上面的,你还需要配置DataStage的一个名字叫dsenv文件。因为我们的例子当中DataStage Server是运行在Linux上面的。我们将以Linux为例讲述dsenv文件的配置方法。
dsenv文件是主要是用来存放环境变量的,这些环境变量包含了DataStage要用到的类库,以及要连接的数据库的安装的路径等。dsenv文件位于位于文件夹 $DataStage/DSEngine里面,$DataStage/是DataStage的安装目录,例如:/home/dsadm/Ascential/DataStage/。
打开dsenv文件,在文件的最后加上如下内容:
DB2DIR=/opt/IBM/DB2/V8.1;export DB2DIR DB2INSTANCE=db2inst1; export DB2INSTANCE INSTHOME=/home/db2inst1;export INSTHOME PATH=$PATH:$INSTHOME/sqllib/bin:$INSTHOME/sqllib/adm:$INSTHOME/sqllib/misc export PATH LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$INSTHOME/sqllib/lib;export LD_LIBRARY_PATH THREADS_FLAG=native;export THREADS_FLAG |
这些环境变量用来描述DB2的安装路径、DB2的实例、以及DB2类库的路径。配置好这些环境变量后,我们就可以用DataStage连接DB2了。下面我们正式进入开发环节。
(1)用DataStage Administrator登录到DataStage Server。Host system是安装DataStage Server的主机,输入它的IP地址或者主机名。另外再输入用户名和密码后,单击按钮"OK";
(2)登录后,在标签Projects中可以看到目前这个DataStage Server上面所有的项目。单击按钮"Add"新建一个项目;
(3)在弹出的对话框中输入项目名SampleProject,项目存储的默认路径是DataStage安装路径的Projects目录下面,你可以通过单击按钮"Browse"来改变默认路径。注意不要钩上选择框"Create protected project",因为如果钩上的话你所创建的工程将没办法被改变。单击按钮"OK";
(4)你会看到在项目列表里面已经有了我们刚创建好的项目SampleProject,单击按钮"Close"关闭DataStage Administrator;
(5)用DataStage Designer登陆到DataSatge Server,输入DataStage Server的IP或主机名以及用户名和密码,并指定Project为我们刚才创建的项目SampleProject。单击按钮"OK";
(6)在DataStage Designer当中单击File'New去创建一个新的ETL Job;
(7)选择"Parallel Job",单击按钮"OK";
(8) 一个新的ETL Job已经创建了,单击工具栏上的图标"保存",或者用快捷键"Ctrl+S"来保存,这时候一个保存ETL Job的对话框会弹出来;
(9)在弹出的对话框中。在Job name一栏输入"SampleJob",在Category中输入"Sample"。单击按钮"OK";
(10) 保存好刚创建的ETL Job后,我们用DataStage Designer来导入数据库的表结构。在DataStage Designer的左下方的Repository中右键单击"Table Definition"。然后选择 Import'Pug-in Meta Data Definitions…;
(11)在弹出的对话框中选择DSDB2,单击按钮OK;
(12) 在弹出的对话框中,Server Name选择Source。输入用户名和密码,再钩上Tables选择框之后单击按钮Next;
(13)选择表employee,把要保存到的目录改成PlugIn\Source。然后单击按钮 Import.;
(14)重复步骤 10-13把存储在Target数据库中的表employee的表结构导入进来,这次存放的路径改成PlugIn\Target。完成后,你会在Repository中看到你导入的表结构;
(15)从左边的palette中拖入两个DB2/UDB API Stage到右边的面板上。DB2/UDB2 API Stage是用来连接DB2数据库的,我们这两个DB2/UDB API Stage一个用来连接数据库source,另一个用来连接数据库Target;
(16)右键单击左边的DB2/UDB API Stage不要放开,一直拖拽鼠标到右边的DB2/UDB2 API Stage上面。这时候在这两个Stage之间会出现一条连线,代表了数据的流向。下面我们将配置这两个Stage的属性;
(17)左键双击左边的DB2/UDB API Stage,会弹出如下图所示的属性框。在标签Stage的子标签General中,设置Stage name为Source,Server name为Source,User ID和 Password设置为右权限访问这个数据库的用户名和密码。Transaction Isolation的默认的选项是Cursor Stability,保持默认选项然后单击标签Output;
(18)在标签Output的子标签General中,输入Table names为employee,并在Query type下拉框中选择Generated SQL Query。这样DataStage会自动帮你生成大部分的SQL代码。然后单击子标签Columns;
(19)在Columns子标签中单击按钮Load去导入刚才从数据库中导进来的表结构;
(20)在弹出的对话框中选择目录PlugIn\Source中的表结构employee,然后单击按钮OK;
(21) 在弹出的对话框中选择要导入的表的列,默认是全选,保持默认并单击按钮OK;
(22) 这时候你会看到表的字段已经被导入进来。单击子标签SQL;
(23) 在子标签SQL中,你会看到系统自动生成的SQL语句。单击按钮 View Data查看表employee中的数据;
(24)当前employee表中有两条数据。单击按钮Close关掉数据查看窗口;
(25)现在我们开始编辑用来连接目标数据库的DB2/UDB API Stage的属性。双击这个Stage,弹出的属性设置窗口如下图所示。在标签Stage的子标签General中,Stage name设置为Target,Server name设置为Target,User ID和Password分别设置为有权限对Target数据库进行操作的用户名和密码。其他属性保持默认值,然后单击标签Input;
(26)在标签Input的子标签General中,设置Table name为employee,Update action选择 Insert rows without cleaning。Create table action选择Do not create target table。然后单击子标签Columns;
(27)在子标签Columns中,你会发现已经有表结构load进来了,这个表结构是和source数据库中的employee表的结构一致的。单击按钮OK并保存ETL Job;
(28)在工具栏中单击图标"编译"对刚开发完的ETL Job进行编译;
(29)编译过程中会弹出一个对话框显示编译的进行情况。最终ETL Job编译成功后对话框中会显示如下图中所示的消息:"Job successfully compiled with no errors";
(30)编译成功后,我们打开DataStage Director来运行我们开发的ETL Job。从DataStage Designer中打开DataStage Director的方法为:从菜单栏中选择Tools'Run Director;
(31)打开DataStage Director后你会在Sample目录下面发现我们开发好的ETL Job SampleJob,状态为Compiled。选择SampleJob,然后单击工具栏中的"运行"按钮;
(32)在弹出的对话框中可以设置运行的参数,比如出现多少个warning后ETL Job会自动中止掉。我们保持这个对话框中的默认设置,单击按钮Run;
(33) 这时候你会注意到SampleJob的状态从Compiled变成了Running,等到SampleJob的状态变成Finished后,该ETL Job的运行就结束了;
(34)如下图所示,SampleJob的状态变成了Finished。SampleJob成功结束运行;
(35)到DataStage Designer中,用View Data功能查看目标数据库Target中employee表中的数据。你会发现和源数据库source中的employee表中的数据是一样的。也说明我们开发的ETL Job成功的完成了我们想要它完成的任务。
本文首先介绍IBM WebSphere DataStage在数据源连接能力以及并行执行能力两方面的特性,接着介绍了它的开发环境。最后用一个简单的ETL Job演示了用IBM WebSphere DataStage进行ETL开发的过程,使大家对这个过程有了一个比较清楚的了解。IBM WebSphere DataStage提供的图形化的环境使我们更容易进行开发和维护。
相关推荐
随着大数据技术的不断发展和企业对数据价值认识的加深,未来 IBM WebSphere DataStage Advanced Enterprise Edition 将继续朝着更加智能化、自动化以及易于使用的方向发展,为企业提供更多创新的数据处理解决方案。...
### DataStage进行数据整合第2部分 #### 一、JobSequence的用法 在IBM WebSphere DataStage中,为了管理不同ETL作业之间的依赖关系,有效地控制它们的执行顺序,引入了**JobSequence**的概念。这有助于实现复杂的...
1. **WebSphere DataStage 和 QualityStage 的关系**:首先阐述 WebSphere DataStage 与 QualityStage 之间的联系,后者作为前者的一个组成部分,共同为企业提供全面的数据集成和质量提升服务。 2. **QualityStage...
IBM WebSphere DataStage是IBM旗下的一款企业级数据整合工具,专为大规模数据处理和ETL(Extract, Transform, Load)操作设计。它能够高效地从各种数据源抽取数据,执行复杂的数据转换,并将数据加载到目标系统中,...
IBM DataStage是IBM公司开发的一款强大的数据集成工具,它属于IBM Information Server的一部分,主要用于构建企业级的数据集成解决方案。Websphere则是IBM的一个软件平台,它提供了各种服务和工具,包括应用服务器、...
1. **金融行业**:银行和其他金融机构使用DataStage来整合客户交易数据,并进行风险评估和合规性检查。 2. **零售行业**:零售商利用DataStage进行销售数据分析,优化库存管理和供应链流程。 3. **医疗保健行业**:...
为了解决这些问题,IBM 开发了 WebSphere DataStage,这是一种强大的数据整合工具,能够极大地减少手动编码的需求,并简化数据整合流程。DataStage 提供了一个图形化的开发环境,使得从各种数据源抽取数据、转换数据...
WebSphere DataStage 8.0 是 IBM Information Server 的核心组件之一,主要用于高效的数据集成任务。它具备以下关键特性: 1. **用户体验改进**: - **快速查找**:增强了在仓库树中查找项目的功能,支持全名或...
IBM WebSphere DataStage(下面简称为 DataStage)为整个 ETL 过程提供了一个图形化的开发环境,它是一套专门对多种操作数据源的数据抽取、转换和维护过程进行简化和自动化,并将其输入数据集或数据仓库的集成工具。...
Datastage作为IBM InfoSphere Information Server的重要组成部分之一,是一款强大的企业级数据集成工具。它能够帮助用户实现数据的抽取、转换和加载(ETL),从而为企业的决策支持系统提供高质量的数据来源。本指南...
假设一家大型零售商希望整合其分布在不同地区和部门的数据,以便更好地进行市场分析和决策支持。使用DataStage可以帮助其实现以下目标: - **统一数据标准**:通过定义统一的数据模型和标准,确保所有数据的一致性...
第1章介绍部分,简单概述了DataStage的基本概念和用途,它是IBM提供的一个强大的ETL(提取、转换、加载)工具,用于在不同数据源之间进行数据整合和清洗。DataStage提供了一个图形化的开发环境,让用户能够以直观的...
在用 IBM WebSphere DataStage 进行数据整合的过程中,我们一般会开发很多个单独的 ETL Job 去完成特定的逻辑功能,这些 ETL Job 之间的运行顺序往往是有限制的。那麼我们如何处理 ETL Job 之间的这种依赖关系呢?...
DataStage 是一款强大的数据集成工具,由 Ascential 公司开发,后来被 IBM 收购并纳入其 WebSphere 产品线中。它主要用于从多种数据源抽取、转换和加载数据,尤其适用于构建数据仓库。DataStage 提供了一个图形化的...
IBM DataStage 8.1 是一个强大的数据集成工具,它属于 IBM Information Server 的一部分,用于在Windows平台上构建、运行和管理复杂的数据集成流程。本文档将深入探讨 DataStage 的安装过程,以及涉及到的关键组件和...
在数据集成领域,IBM WebSphere DataStage 是一款强大的图形化工具,用于执行ETL(提取、转换、加载)任务。DataStage 提供了一个名为 DataStage BASIC 的编程语言,允许开发人员自定义功能函数以满足特定的数据处理...
IBM DataStage V8版本在数据处理领域具有广泛的应用,它能够帮助用户从各种数据源抽取、转换和加载数据,以实现数据清洗、整合和分析。 1. **数据抽取(Extract)**: - DataStage提供了多种数据源连接器,如关系...