IBM InfoSphere DataStage 的 PXDebugger 组件简述
本部分会从以下几个方面详细讲述 IBM InfoSphere DataStage 的 PXDebugger 组件:
IBM InfoSphere DataStage 的 PXDebugger 组件总述
DataStage 提供了两种调试作业的方式:一种方式是通过添加一些特殊的 Stage 到作业来实现调试作业。这些 stage 有 Head stage, Tail Stage, Sample stage, Peek Stage, Row Generator stage, Column Generator stage 等;另一种方式是通过使用 DataStage 的调式功能,设置一些调试断点后,以调式模式运行作业,检查作业在断点停止时的数据来实现调式的目的。在以前的 DataStage 版本中,DataStage 的调式功能仅支持服务器作业,对于并行作业,我们只能采用第一种调式方法进行调式。在最新发布的 DataStage v8.7 版本中,DataStage 扩展了调式功能,使之也支持并行作业。
PXDebugger 我们在下文中也称之为 PX 调试器,它提供一个基于图形界面的用户交互式组件,用于当数据流经或者通过一个 stage 时来检查数据记录,它不涉及到用户作业的修改以及类库的重新编译。在数据输入输出的链接上可以设置断点,当断点条件满足的时候来中断或者暂停当前的作业数据处理。断点的设置会跨越 DataStage 的所有节点(分区),即它对所有的节点生效。当作业暂停在某个断点上面的时候,用户可以检查当前 link 上的下一条记录(用户的这一操作通常被称为“单步”),用户可以恢复作业的正常运行,直到运行至下一个断点,或者直接运行作业直到作业结束。
PXDebugger 组件在 Information Server 8.7 发布版中所具有的功能特性
PXDebugger 组件与 DataStage 的服务器面板中的调试器在很大程度上具有相同的功能特性,但是在很多的方面(例如作业执行的并行特征)PXDebugger 组件与其有不同的地方。下面我们列出了 PXDebugger 组件在 Information Server 8.7 发布版中所具有的功能特性:
- 一个并行作业可以在多个断点同时中断
- 断点不仅可以设置在输入 link,也可以设置在输出 link 上面(DataStage 的服务器面板中的调试器只允许断点设置到输出 link 上)
- 一个断点可以被选择性的在一个 DataStage 节点或者多个 DataStage 节点上启用
- 对于运行于不同 DataStage 节点上的并行作业,从一个节点到下一个节点的数据的分布不一定完全一致,即使没有使用 PXDebugger 组件也是如此。例如:如果一个操作器运行在两个节点上面,输入数据包含从 A 到 F 的六条数据,第一次运行那么这些数据可能的分配情况是 (A, C, E) 和 (B, D, F),也有可能第二次运行数据的分配情况是 (A, B, D), 和 (C, E, F)
- 当一个断点设置跨越所有 DataStage 节点的时候,运行在某个节点上的实例(Stage)可能会由于断点条件满足而中断,其它节点上运行的实例(Stage)不会受此影响,会继续处理数据直到它们自身上的断点条件满足,或者是在没有任何断点条件满足的情况下运行直至结束
- PXDebugger 组件所显示出来的数据是与 DataStage 节点相关联的,即在某个数据 link 上的数据的读取和写入都是绑定到给定的节点上
- 启动和停止单个的 player 通知会发送到客户端,在客户端的 UI 上显示出来
在该小节将介绍 DataStage v8.7 中新增的一些用于调试的图形界面。通过使用这些界面提供的丰富功能,我们可以便利地实现所需的所有调式操作。
在 DataStage 8.7 中,登录 Designer 客户端后,打开一个并行作业 , 您会发现有一个新的菜单项“Debug”,点击该菜单可以得到如图 1 所示的调式菜单栏目。
图 1. 调式菜单
以下是对这些菜单项的介绍:
- Set tartget debug job: 从已经在 Designer 中打开的作业中选择要调试的作业。默认是当前视图中打开的作业。
- Go: 以调试模式运行当前作业。
- Run to End: 让作业不再任何断点停留,直接运行到结束。
- Job Parameters: 打开作业的参数设置。
- Edit Breakpoint: 编辑断点。
- Toggle Breakpoint: 添加断点。
- Clear All Breakpoints: 清除所有已有断点。
- View Job Log: 打开 Director 客户端查看作业运行日志。( 小提示:在 DataStage 的最新版本中,也支持在 Designer 中查看作业运行日志,你可以在 DS Designer 中点击 View-->Job Log 打开作业日志视图 )。
- Debug Window: 打开作业调试窗口。(选择 Go 菜单项也会自动打开该作业调试串口)。如图 2 调式窗口。
如图 2 所示调式窗口由“工具栏”,“状态显示区”,“活动的断点区”,“节点的列数据显示区”,和“观察列表区”5 个部分组成。
图 2. 调式窗口
以下是对这些菜单项的介绍:
- 工具栏:在该栏中集成了常用调式控制所需的操作按钮。如“运行作业”,“Run to End”,“Job parameter”,“Edit Breakpoint”等。
- 状态显示区:显示正在调式的作业的状态。
- 活动的断点区:显示已经到达的断点。如果当前有多个已到达的活动断点,可以通过下拉列表选择想查看的断点。
- 节点的列数据显示区:显示当前节点正在处理的列数据。如果有多个节点且想查看某个节点的列数据信息,可以通过点击节点标签切换到对应节点。
- 观察列表区:可以把某些需要观察的列添加到观察列表区,用以观察需要重点关注的列。在这个区域,将显示已添加的列以及其在各个节点的值。我们可以在节点的列数据显示区中,右击想添加的列,选择“Add to watch list”添加该列到观察列表。如果想把列从观察列表中移除,可以在观察列表中右击该列,选择“remove”移除该列。
在作业中右击 Stage 之间的链接,会弹出如图 3 的快捷菜单。在这个菜单中,有两个菜单项与调式作业相关:
- Toggle Breakpoint: 快速添加断点到该链接。
- Edit Breakpoint: 编辑当前链接中的断点。
图 3. 右击快捷菜单调式项
在本节中我们想读者提供了使用 PXDebugger 进行数据诊断和调试的几种典型的应用场景。这些 PXDebugger 应用场景示例直观的描述了在当前的 DataStage 服务器版本中所提供的数据调试功能,同时这些示例场景仅仅供读者作为参考去开发和调试并行作业,读者可以根据本身的实际情况进行调整或者使用。
应用背景:在设计作业的过程中用户有时候需要检查和验证在当前的输出 link 上面有什么数据行、数据列、分区等信息传递到下一个 stage,接下来我们提供了一个本应用场景的示例。
- 打开需要调试的作业,点击我们要查看的输出 link
- 点击后的输出 link 会被高亮显示,在本例中我们需要验证 GenEmployee 生成的数据,点击它所对应的输出 link,Gen_Employee 如下图所示:
图 4. 选择需要调试的 link
- 从主菜单中选择“Debug”菜单,然后会弹出作业调试菜单窗口,如下图所示:
图 5. 打开调试菜单
- 在弹出调试菜单后,用户可以选择 Toggle Breakpoint 快捷图标添加(如果本 link 上没有断点)、删除(如果本 link 存在其它断点)断点。如下图所示,当用户点击 Toggle Breakpoint 图标后,会在当前 link 上出现一个断点标识,标识此 link 上设置了一个断点。
图 6. 在目标 link 上添加断点
- 添加好断点以后,接下来可以运行这个作业了。从主菜单中选择 Debug 菜单,然后选择 Go(或者选择 F5 快捷键),作业便进入调试运行状态。
图 7. 从调试主菜单启动作业
- 在作业调试运行的过程中,PXDebugger 给用户提供了可以查看详细信息的调试窗口。我们通过以下方法打开调试窗口,从调试菜单面板中点击 Show/Hide Debug Window 图标。如下图所示:
图 8. 打开调试详细信息窗口
- 当作业断点的条件满足时,处于运行中的作业的断点状态会发生改变,进入断点中断状态。如下图所示,断点显示为红色。
图 9. 断点满足,作业进入中断
- 接下来,用户可以对当前的数据断点进行检查和验证。在下面的几个用户场景中,我们会向读者介绍断点的详细设置,修改以及断点中断表达式输入。
备注说明:
在调试窗口中显示的信息会包含以下数据:
1) 调试器的当前状态(中断状态等)
2) 处于中断状态中的当前的作业 link,即哪一个 link 正在处于中断状态
3) 输出 link 所属的 stage 的类型
4) 输出 link 的相关信息(会列出当前 link 的所有节点的信息,以节点排序)
5) 传递到当前中断 link 的实际数据(会列出当前 link 的所有节点的数据,以节点排序)
在一个并行作业中,对于一个断点满足显示给用户的信息数据还可能包含以下信息:
1) 断点 link 的行数据信息
2) 分区 / 节点数和所显示的每一行数据的行标识
注意 / 异常:
如果一个并行作业没有被成功的编译,或者从未进行过编译,那么用户无法对这个作业进行设置断点。
用户对一个作业设置断点后,断点会一直存在,不会因为作业的修改编辑,运行错误等操作而消失,直到用户删除这个断点。有关更多断点遗留、继承等方面的信息读者可以参考本文最后提供的 Inforsphere Information Server 信息中心。
PXDebugger 组件向用户提供了两种断点中断方式,其中比较重要的一种便是在数据的第 N 个中断。在本场景中,我们向读者介绍在单个 DataStage 节点配置条件下如何做正确的数据验证。
设置数据在第 N 个中断的方法如下:
- 首先打开断点编辑窗口,如下图所示:
图 10. 断点编辑窗口
- 选择 Every N Rows 复选框,同时输入需要验证第几行数据。在此作业的断点列表中,便会显示出本作业的所有的断点。用户也可以在进行调试之前选择删除某些断点。
- 当完成上述设置后,用户便可以进入调试模式,点击调试窗口菜单的调试图标。作业在断点条件满足后会变为中断状态,如下图所示:
图 11. 断点详细信息窗口
对于 DataStage 的单个节点配置,即只设置一个 node 的情况,从下图可以看出激活状态中的断点 Gen_Employee 中断时节点 Node1 的数据。因为只是单节点配置,在 Column data per node 面板中,只显示出配置的这个节点。
- 在验证完数据后,用户从调试窗口中选择 Continue 图标,使作业继续运行。当满足下一个条件时(即第 2*N 行记录)会再次进入中断模式。如下图所示:
图 12. 跳过当前中断,继续运行作业
PXDebugger 组件不仅仅支持在数据的第 N 行中断,同时对表达式中断也有很好的支持。在本场景中,我们向读者介绍在单个 DataStage 节点配置条件下如何做正确的表达式数据匹配验证。
在数据调试窗口,用户可以使用这一个选项去声明一个表达式。作业调试运行过程中如果某个 link 上的表达式执行为 TRUE 的情况下,调试作业便会进入中断状态。PXDebugger 可以允许用户在表达式中使用输出数据的列值。对于一个并行作业,我们可以使用下面的表达式声明:
- 由双引号所包含的字符串 String 类型,例如“blue”,“customer name”等等
- 使用相等操作符:=
- 使用不等于操作符:<>
- 使用小于操作符:<
- 使用大于操作符:>
打开断点调试编辑窗口,如下图所示。选择使用 Expression 选项。在下面输入 Gen_Employee.EID<4300000000 表达式,即当输出数据中的员工号码小于 4300000000 时作业会中断。
图 13. 断点编辑窗口
完成上面的操作之后,启动调试运行作业。之后断点条件满足,作业进入中断状态。下图是断点调试数据详细信息窗口,显示出了在中断时 DataStage 点上的数据。
图 14. 断点详细信息窗口
本小节主要讲解如何在数据调试过程中进行日志查看以及分析,帮助并指导用通过作业日志发现以及解决问题。
为了帮助和方便作业调试,在 Information Server 8.7 正式发布版本的 DataStage Designer 客户端中增加了一个运行时日志查看工具。它提供了 DataStage Director 客户端工具的部分子集功能,运行用户查看打开的作业的运行时的详细日志。这个工具并不仅仅绑定到了作业的调试上面,实际上用户也可以独立的使用它。
用户可以通过 DataStage 主菜单的 View 中的 Runtime Job Log 来打开它。下图是一个并行作业的运行时日志查看示例。
图 18. 运行时作业日志工具
运行时日志查看工具也是 DataStage Designer 客户端中一个可停靠(拖拽)的工具窗口,默认情况下在日志查看视图中显示的是当前作业最近的日志信息。用户可以移动和拖拽这个窗口到 Designer 客户端中的任何地方。
正如上面图片实例所示,在日志查看工具上面有一个工具条,可以刷新、过滤以及设置日志的显示方式。工具条的下面是日志显示视图。对于所有的打开的作业来讲,只有一个日志查看窗口,但是它可以显示出所有的已经打开的作业。这个跟 Excel 的显示工作方式类似。当用户打开一个新的作用的时候,在日志查看窗口会新打开一个新的视图。
日志查看窗口显示了当前处于激活状态作业的运行时日志信息,包括三种类型的日志详细信息,如下图所示:
图 19. 日志查看工具中的日志类型分类
在调试作业的过程中,对日志事件的查看和分析会对作业的运行状态和数据处理有很大的帮助。在日志查看窗口,用户可以双击某个特殊或者异常的事件日志去查看更加详细的信息,如下图所示。这个功能跟在 Director 客户端查看方式一致。
图 20. 详细事件日志窗口
在运行时作业日志查看工具中提供了几个快捷操作功能,例如启动一个作业,重置一个作业等。下面对这几项功能作个简单的描述。
- Refresh:在调试并行作业的时候,用户可以手动的点击刷新图标更新最近的作业日志。
- Filter:当调试作业的日志信息的很多的时候,例如每分钟会出现一万行警告信息,这时可以使用过滤图标提取出最有效的日志。
- Run:这里也提供了运行作业的一种便捷方式,允许用户快速的启动作业。
- Reset:对一个作业进行重置。
注意:
出于性能方面的考虑,在作业的调试运行的时候,日志一般会在 10 秒到 20 秒之间刷新一次,从服务器端更新日志。因此,有时候显示出的信息并不是服务器上最新的日志,用户需要手动的去刷新以保持和服务器同步。
IBM InfoSphere Information Server 的 PXDebugger 组件为 DataStage 的作业开发用户提供了方便强大的数据调试功能,它允许用户在作业设计阶段和开发过程中就可以实时地访问和诊断数据流。本文中的数据诊断和调试应用场景为用户提供了详细而全面的参考价值及作用。并且指导开发人员设计和开发出更为高效和安全的 DataStage 作业。
| 描述 | 名字 | 大小 | 下载方法 |
|---|---|---|---|
| 本文章中使用的数据调试 Sample 作业 | DebugSample.zip | 50KB | HTTP |
学习
-
IBM InfoSphere Information Server, Version 8.7 Information Center 在这里可以访问 IBM InfoSphere Information Server, Version 8.7 信息中心。
-
IBM InfoSphere Information Server 并行作业调试 IBM InfoSphere Information Server 并行作业调试介绍。
-
IBM InfoSphere Information Server 作业调试工具 IBM InfoSphere Information Server 对 DataStage 作业提供的调试工具介绍。
- 在 developerWorks 中国网站 Information Management 专区 了解关于信息管理的更多信息,获取技术文档、how-to 文章、培训、下载、产品信息以及其他资源。
- 随时关注 developerWorks 技术活动 和 网络广播,了解各种 IBM 产品和 IT 行业话题。
- developerWorks 播客:聆听针对软件开发人员的有趣的访谈和讨论。
- developerWorks 演示中心:观看面向初学者的产品安装和设置演示,以及为经验丰富的开发人员提供的高级功能。
获得产品和技术
- 使用可以直接从 developerWorks 下载的 IBM 产品评估试用版软件 构建您的下一个开发项目。
讨论
- 参与 developerWorks 博客 并加入 developerWorks 中文社区:查看开发人员推动的博客、论坛、群组和 wikis,并与其他 developerWorks 用户交流。

