跳转到主要内容

单击提交则表示您同意developerWorks 的条款和条件。 查看条款和条件.

当您初次登录到 developerWorks 时,将会为您创建一份概要信息。您在 developerWorks 概要信息中选择公开的信息将公开显示给其他人,但您可以随时修改这些信息的显示状态。您的姓名(除非选择隐藏)和昵称将和您在 developerWorks 发布的内容一同显示。

所有提交的信息确保安全。

  • 关闭 [x]

当您初次登录到 developerWorks 时,将会为您创建一份概要信息,您需要指定一个昵称。您的昵称将和您在 developerWorks 发布的内容显示在一起。

昵称长度在 3 至 31 个字符之间。 您的昵称在 developerWorks 社区中必须是唯一的,并且出于隐私保护的原因,不能是您的电子邮件地址。

单击提交则表示您同意developerWorks 的条款和条件。 查看条款和条件.

所有提交的信息确保安全。

  • 关闭 [x]

利用 IBM InfoSphere DataStage 的 PXDebugger 组件快速高效的诊断和调试 DataStage 作业

孙春华, 软件工程师, IBM
孙春华的照片
孙春华, IBM 中国软件开发中心软件工程师。目前从事针对于 InfoSphere 的系统测试以及集成测试工作,熟悉 InfoSphere 产品家族的各个子产品。同时他对各种开源的测试工具以及测试自动化技术比较感兴趣。
杨佑鑫, 软件工程师, IBM
杨佑鑫的照片
杨佑鑫,IBM 中国研发中心高级工程师,目前从事 InfoSphere Information Server 相关产品 DataStage,QualityStage 和 Information Service Director 的系统测试和部分的性能测试工作。

简介: 数据的调试和诊断是 ETL 作业开发中的一个非常重要的部分,在以前 IBM InfoSphere DataStage 版本中,DataStage 的调式功能仅支持服务器作业,对于并行作业,我们只能通过使用一些特殊 Stage 来实现作业调式。在 DataStage 8.7 版本中,新增了一个 PXDebugger 组件,它向 DataStage 并行作业开发用户提供了强大的数据调试功能。本文将介绍 IBM InfoSphere DataStage 的 PXDebugger 全新的并行调试组件,并且通过引入几个典型应用场景,帮助读者快速的了解该组件及其用法。

发布日期: 2012 年 2 月 13 日
级别: 初级
访问情况 : 593 次浏览
评论: 


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 上显示出来

PXDebugger 组件用户界面及操作简介

在该小节将介绍 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 的数据信息

应用背景:在设计作业的过程中用户有时候需要检查和验证在当前的输出 link 上面有什么数据行、数据列、分区等信息传递到下一个 stage,接下来我们提供了一个本应用场景的示例。

  1. 打开需要调试的作业,点击我们要查看的输出 link
  2. 点击后的输出 link 会被高亮显示,在本例中我们需要验证 GenEmployee 生成的数据,点击它所对应的输出 link,Gen_Employee 如下图所示:

    图 4. 选择需要调试的 link
    选择需要调试的 link

  3. 从主菜单中选择“Debug”菜单,然后会弹出作业调试菜单窗口,如下图所示:

    图 5. 打开调试菜单
    打开调试菜单

  4. 在弹出调试菜单后,用户可以选择 Toggle Breakpoint 快捷图标添加(如果本 link 上没有断点)、删除(如果本 link 存在其它断点)断点。如下图所示,当用户点击 Toggle Breakpoint 图标后,会在当前 link 上出现一个断点标识,标识此 link 上设置了一个断点。

    图 6. 在目标 link 上添加断点
    在目标 link 上添加断点

  5. 添加好断点以后,接下来可以运行这个作业了。从主菜单中选择 Debug 菜单,然后选择 Go(或者选择 F5 快捷键),作业便进入调试运行状态。

    图 7. 从调试主菜单启动作业
    从调试主菜单启动作业

  6. 在作业调试运行的过程中,PXDebugger 给用户提供了可以查看详细信息的调试窗口。我们通过以下方法打开调试窗口,从调试菜单面板中点击 Show/Hide Debug Window 图标。如下图所示:

    图 8. 打开调试详细信息窗口
    打开调试详细信息窗口

  7. 当作业断点的条件满足时,处于运行中的作业的断点状态会发生改变,进入断点中断状态。如下图所示,断点显示为红色。

    图 9. 断点满足,作业进入中断
    断点满足,作业进入中断

  8. 接下来,用户可以对当前的数据断点进行检查和验证。在下面的几个用户场景中,我们会向读者介绍断点的详细设置,修改以及断点中断表达式输入。

备注说明:

在调试窗口中显示的信息会包含以下数据:

1) 调试器的当前状态(中断状态等)

2) 处于中断状态中的当前的作业 link,即哪一个 link 正在处于中断状态

3) 输出 link 所属的 stage 的类型

4) 输出 link 的相关信息(会列出当前 link 的所有节点的信息,以节点排序)

5) 传递到当前中断 link 的实际数据(会列出当前 link 的所有节点的数据,以节点排序)

在一个并行作业中,对于一个断点满足显示给用户的信息数据还可能包含以下信息:

1) 断点 link 的行数据信息

2) 分区 / 节点数和所显示的每一行数据的行标识

注意 / 异常:

如果一个并行作业没有被成功的编译,或者从未进行过编译,那么用户无法对这个作业进行设置断点。

用户对一个作业设置断点后,断点会一直存在,不会因为作业的修改编辑,运行错误等操作而消失,直到用户删除这个断点。有关更多断点遗留、继承等方面的信息读者可以参考本文最后提供的 Inforsphere Information Server 信息中心。


应用场景二:在数据处理过程中验证 Nth 条记录

PXDebugger 组件向用户提供了两种断点中断方式,其中比较重要的一种便是在数据的第 N 个中断。在本场景中,我们向读者介绍在单个 DataStage 节点配置条件下如何做正确的数据验证。

设置数据在第 N 个中断的方法如下:

  1. 首先打开断点编辑窗口,如下图所示:

    图 10. 断点编辑窗口
    断点编辑窗口

  2. 选择 Every N Rows 复选框,同时输入需要验证第几行数据。在此作业的断点列表中,便会显示出本作业的所有的断点。用户也可以在进行调试之前选择删除某些断点。
  3. 当完成上述设置后,用户便可以进入调试模式,点击调试窗口菜单的调试图标。作业在断点条件满足后会变为中断状态,如下图所示:

    图 11. 断点详细信息窗口
    断点详细信息窗口

    对于 DataStage 的单个节点配置,即只设置一个 node 的情况,从下图可以看出激活状态中的断点 Gen_Employee 中断时节点 Node1 的数据。因为只是单节点配置,在 Column data per node 面板中,只显示出配置的这个节点。

  4. 在验证完数据后,用户从调试窗口中选择 Continue 图标,使作业继续运行。当满足下一个条件时(即第 2*N 行记录)会再次进入中断模式。如下图所示:

    图 12. 跳过当前中断,继续运行作业
    跳过当前中断,继续运行作业

应用场景三:匹配某个表达式断点设计

PXDebugger 组件不仅仅支持在数据的第 N 行中断,同时对表达式中断也有很好的支持。在本场景中,我们向读者介绍在单个 DataStage 节点配置条件下如何做正确的表达式数据匹配验证。

在数据调试窗口,用户可以使用这一个选项去声明一个表达式。作业调试运行过程中如果某个 link 上的表达式执行为 TRUE 的情况下,调试作业便会进入中断状态。PXDebugger 可以允许用户在表达式中使用输出数据的列值。对于一个并行作业,我们可以使用下面的表达式声明:

  1. 由双引号所包含的字符串 String 类型,例如“blue”,“customer name”等等
  2. 使用相等操作符:=
  3. 使用不等于操作符:<>
  4. 使用小于操作符:<
  5. 使用大于操作符:>

打开断点调试编辑窗口,如下图所示。选择使用 Expression 选项。在下面输入 Gen_Employee.EID<4300000000 表达式,即当输出数据中的员工号码小于 4300000000 时作业会中断。


图 13. 断点编辑窗口
断点编辑窗口

完成上面的操作之后,启动调试运行作业。之后断点条件满足,作业进入中断状态。下图是断点调试数据详细信息窗口,显示出了在中断时 DataStage 点上的数据。


图 14. 断点详细信息窗口
断点详细信息窗口

PXDebugger 日志

本小节主要讲解如何在数据调试过程中进行日志查看以及分析,帮助并指导用通过作业日志发现以及解决问题。

运行时日志查看工具

为了帮助和方便作业调试,在 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.zip50KBHTTP

关于下载方法的信息


参考资料

学习

获得产品和技术

讨论

作者简介

孙春华的照片

孙春华, IBM 中国软件开发中心软件工程师。目前从事针对于 InfoSphere 的系统测试以及集成测试工作,熟悉 InfoSphere 产品家族的各个子产品。同时他对各种开源的测试工具以及测试自动化技术比较感兴趣。

杨佑鑫的照片

杨佑鑫,IBM 中国研发中心高级工程师,目前从事 InfoSphere Information Server 相关产品 DataStage,QualityStage 和 Information Service Director 的系统测试和部分的性能测试工作。

关于报告滥用的帮助

报告滥用

谢谢! 此内容已经标识给管理员注意。


关于报告滥用的帮助

报告滥用

报告滥用提交失败。 请稍后重试。


developerWorks:登录


需要一个 IBM ID?
忘记 IBM ID?


忘记密码?
更改您的密码

单击提交则表示您同意developerWorks 的条款和条件。 使用条款

 


当您初次登录到 developerWorks 时,将会为您创建一份概要信息。您在 developerWorks 概要信息中选择公开的信息将公开显示给其他人,但您可以随时修改这些信息的显示状态。您的姓名(除非选择隐藏)和昵称将和您在 developerWorks 发布的内容一同显示。

请选择您的昵称:

当您初次登录到 developerWorks 时,将会为您创建一份概要信息,您需要指定一个昵称。您的昵称将和您在 developerWorks 发布的内容显示在一起。

昵称长度在 3 至 31 个字符之间。 您的昵称在 developerWorks 社区中必须是唯一的,并且出于隐私保护的原因,不能是您的电子邮件地址。

(长度在 3 至 31 个字符之间)


单击提交则表示您同意developerWorks 的条款和条件。 使用条款.

 


为本文评分

评论

static.content.url=http://www.ibm.com/developerworks/js/artrating/
SITE_ID=10
Zone=Information Management
ArticleID=793201
ArticleTitle=利用 IBM InfoSphere DataStage 的 PXDebugger 组件快速高效的诊断和调试 DataStage 作业
publish-date=02132012

标签

Help
使用 搜索 文本框在 My developerWorks 中查找包含该标签的所有内容。

使用 滑动条 调节标签的数量。

热门标签 显示了特定专区最受欢迎的标签(例如 Java technology,Linux,WebSphere)。

我的标签 显示了特定专区您标记的标签(例如 Java technology,Linux,WebSphere)。

使用搜索文本框在 My developerWorks 中查找包含该标签的所有内容。热门标签 显示了特定专区最受欢迎的标签(例如 Java technology,Linux,WebSphere)。我的标签 显示了特定专区您标记的标签(例如 Java technology,Linux,WebSphere)。