30 多个最常问的 Ab Initio 面试问题和答案

2025 年 4 月 10 日 | 10 分钟阅读

1) 您对 Ab Initio 有何了解?/ 简要介绍 Ab Initio。

Ab Initio,也称为 Abinitio,是一种用于提取、转换和加载数据的工具。“Abinitio”是一个拉丁词,意思是“从头开始”。之所以命名为 Abinitio,是因为 Sheryl Handler 和她的团队在他们之前的公司破产后开始了这项事业。Sheryl Handler 是 Thinking Machines Corporation 的前首席执行官,当 Thinking Machines Corporation 破产时,他决定将这家公司作为一个新的开端。

它主要用于数据分析、数据操作、批处理以及基于图形用户界面 (GUI) 的业务并行处理。


2) 什么是 Ab Initio 软件?

Ab Initio Software 是一家美国跨国私人企业软件公司,总部位于马萨诸塞州列克星敦。Ab Initio Software 专注于大容量数据处理应用程序和企业应用程序集成。Ab Initio 软件在一个平台上提供多种产品,用于并行数据处理应用程序。


3) 哪些行业主要使用 Abinitio?

Abinitio 软件应用程序最广泛地用于商业智能数据处理平台,以构建大多数业务应用程序,例如操作系统、分布式应用程序集成、从复杂事件处理到数据仓库和数据质量管理系统。


4) Ab Initio 软件应用程序有什么用途?

Ab Initio 软件应用程序主要用于执行与第四代数据分析、批处理、复杂事件、定量和定性数据处理、数据操作以及基于图形用户界面 (GUI) 的并行处理软件相关的功能,该软件通常用于提取、转换和加载 (ETL) 数据。


5) 您对 Ab Initio 软件的历史有何了解?

Ab Initio 软件由 Sheryl Handler 和 Thinking Machines Corporation 的其他几名员工在公司破产后于 1995 年创立。Sheryl Handler 是 Thinking Machines Corporation 的前首席执行官,当 Thinking Machines Corporation 破产时,他决定创办这家公司。


6) Abinitio 架构最重要的组件是什么?

Abinitio 架构包含的最重要组件如下:

  • GDE (图形开发环境)
  • 协作系统
  • 企业元环境 (EME)
  • Conduct-IT

7) 协作系统在 Abinitio 中最重要的作用是什么?

协作系统在 Abinitio 中最重要的作用是提供以下功能:

  • 它管理和运行 Abinitio 图形并控制 ETL 过程。
  • 它提供 ETL 过程的监控和调试。
  • 它提供 Ab Initio 对操作系统的扩展。
  • 它还负责元数据管理以及与 EME 的交互。

8) 是否可以在 Ab Initio 中无限期地运行图形?如果可以,如何实现?

是的,可以在 Ab Initio 中无限期地运行图形。为此,图形结束脚本应调用图形的 .ksh 文件。之后,如果图形名称为 xyz.mp,则在图形的结束脚本中,它应调用 xyz.ksh。通过遵循上述步骤,我们可以无限期地运行图形。


9) Abinitio EME 可以分为多少个段?

Abinitio EME 可以逻辑上分为两个段:

  • 数据集成部分
  • 用户界面(用于访问元数据信息)

10) 您对 Roll-up 组件有何了解?

Roll-up 组件方便用户根据某些字段值收集或分组记录。它为组中的每条记录调用,并包含初始化 2 和 Rollup 3。


11) 如何将 EME 连接到 Abinitio 服务器?

以下是将 EME 连接到 Abinitio 服务器的一些方法。

  • 登录 EME Web 界面 - http://serverhost:[serverport]/abinitio 以将 EME 连接到 Abinitio 服务器。
  • 设置 AB_AIR_ROOT
  • 我们可以通过 GDE 连接到 EME 数据存储。
  • 我们还可以使用 air-command 将 EME 连接到 Abinitio 服务器。

12) 您对 Abinitio 中的 SANDBOX 有何了解?

在 Abinitio 中,术语 SANDBOX 是存储在单个目录树中并作为一个组进行版本控制、导航、迁移和重新定位的图形和相关文件的集合。它是一个安全且受控的环境,用于运行图形。


13) 您对 Abinitio 中的依赖分析有何了解?

在 Abinitio 中,依赖分析是 EME 用来检查项目并跟踪数据如何在组件之间、字段之间以及图形内部和之间进行传输和转换的过程。


14) Abinitio 中的数据编码是什么?

在 Abinitio 中,数据编码是一种用于保持数据机密的方法。在这种方法中,我们确保信息以除发送者和接收者之外的任何人都无法理解的形式存在。


15) Abinitio 中使用了哪些不同类型的文件扩展名?

以下是 Abinitio 中使用的不同类型文件扩展名列表:

  • .mp:此文件扩展名用于存储 Abinitio 图形或图形组件。
  • .mpc:此文件扩展名用于指定自定义组件或程序。
  • .mdc:此文件扩展名用于指定数据集或自定义数据集组件。
  • .dml:此文件扩展名用于指定数据操作语言文件或记录类型定义。
  • .xfr:此文件扩展名用于指定转换函数文件。
  • .dat:此文件扩展名用于指定数据文件(多文件或串行文件)。

16) .dbc 文件扩展名提供哪些信息以连接到数据库?

.dbc 文件扩展名提供以下信息以连接到数据库:

  • 它提供您要连接的数据库的名称和版本号。
  • 它还指定运行数据库实例或服务器的计算机名称,您要连接或安装数据库远程访问软件。
  • 它指定您要链接的服务器、数据库实例或提供商的名称。

17) 您对 Abinitio 中的“查找”文件有何了解?

在 Abinitio 中,查找文件用于定义一个或多个串行文件(也称为平面文件)。它是一个物理文件,用于存储查找的数据。它是一个存储在磁盘文件中的二维数据表。它根据文件格式存储每个数据列的名称和显示格式。


18) Abinitio 中使用了哪些不同类型的并行性?

Abinitio 中主要使用三种并行性。它们是:

  • 组件并行性:组件并行性由具有多个进程同时在单独数据上执行的图形使用。
  • 数据并行性:数据并行性由处理分为多个段并在每个段上分别操作的图形使用。
  • 管道并行性:管道并行性由处理多个组件同时在相同数据上执行的图形使用。在这种并行性中,管道中的每个组件都不断地从上游组件读取、处理数据并写入下游组件。它使两个组件都能够并行操作。

19) dedup 组件和 replicate 组件在 Abinitio 中有什么用途?

在 Abinitio 中,dedup 组件用于消除重复记录。另一方面,replicate 组件将来自输入的记录组合成一个运行,并将该运行的副本写入其每个输出端口。


20) 您对分区有何了解?Abinitio 中有哪些不同类型的分区组件?

分区是 Abinitio 中用于将数据集分成多个小数据集以进行进一步处理的过程。以下是 Abinitio 中不同类型分区组件的列表:

  • 轮询分区:轮询分区用于以块大小块的形式,在输出分区之间均匀地分发数据。
  • 范围分区:范围分区方便用户根据分区范围和键的集合,在节点之间均匀地划分数据。
  • 百分比分区:百分比分区用于以输出与 100 的分数成比例的方式分发数据。
  • 负载平衡分区:负载平衡分区用于动态负载平衡。
  • 表达式分区:表达式分区用于根据 DML 表达式划分数据。
  • 键分区:键分区用于按键分组数据。

21) 您对 Abinitio 中的去分区有何了解?

去分区用于从多个流或操作中读取数据,并重新连接来自不同流的数据记录。Abinitio 中有几个去分区组件可用,例如 Gather、Merge、Interleave、Concatenation 等。


22) 您对溢出错误有何了解?

溢出错误是指计算机无法处理大量数据时发生的错误。在处理数据时,如果大量计算超出了为其提供的内存范围,则会发生溢出错误。


23) Abinitio 中使用的一些 air 命令是什么?

以下是 Abinitio 中使用的一些 air 命令列表:

  • air object Is<EME path for the object-/Projects/edf/..>:此 air 命令用于查看项目目录中的对象列表。
  • air object rm<EME path for the object-/Projects/edf/..>:此 air 命令用于从存储库中删除对象。
  • air object versions-verbose<EME path for the object-/Projects/edf/..>:此 air 命令用于给出对象的版本历史记录。

注意:除了这些,还有一些其他的 Abinitio air 命令,例如 air object cat、air object modify、airlock show user 等。


24) Abinitio 中 m_dump 的语法有什么用途?

在 Abinitio 中,m_dump 的语法用于从 UNIX 提示符查看多文件中的数据。以下是 m_dump 的命令:

  • m_dump a.dml a.dat:此命令用于打印数据,因为它以格式化文本形式从 GDE 中显示。
  • m_dump a.dml a.dat>b.dat:此命令用于输出。输出重定向到 b.dat 并充当串行文件。b.dat 可以在需要时引用。

25) 您对 Abinitio 中的 Sort 组件有何了解?

在 Abinitio 中,Sort 组件用于重新排序数据。它包含两个参数:“Key”和“Max-core”。

  • Key:Key 参数是排序组件的参数之一。它用于确定排序顺序。
  • Max-core:Max-core 参数控制排序组件将数据从内存转储到磁盘的频率。

26) DB config (.dbc 文件) 和 CFG (.cfg) 文件之间有什么区别?

DB config 文件 (.dbc 文件) 包含 Ab Initio 连接到数据库以提取或加载表或视图所需的信息。另一方面,.cfg 文件是 db_config 在使用 Load DB Table 等组件时创建的表配置文件。


27) Ab Initio 是 ETL 工具吗?什么是 ETL 工具?

ETL 是 Extract、Transform 和 Load 的首字母缩写。ETL 工具是使用客户端-服务器模型的软件。

Ab Initio 作为一个 ETL 工具工作。它是一个第四代数据分析、数据操作和批处理图形用户界面 (GUI) 基于并行处理工具,用于提取、转换和加载 (ETL) 数据。


28) 您对局部查找有何了解?

局部查找文件包含可以存储在主内存中的文档或数据记录。它可以比从磁盘检索数据更快地检索记录。为此,局部查找使用转换函数。


29) Sandbox 和 EME 之间有什么区别?我们可以在 sandbox 中执行 checkin 和 checkout 吗?

Sandbox 是一个工作区,用于开发、测试或运行与给定项目相关的代码。一个特定的 sandbox 仅与一个项目关联,而一个项目可以检出到多个 sandbox。我们可以在任何时候在 sandbox 中只保存一个版本的代码。另一方面,EME 是一个数据存储,包含所有检入的代码版本。


30) 您对局部参数和形式参数有何了解?

局部参数和形式参数都是图形级参数,但它们之间存在关键区别。在局部参数中,我们需要在声明时初始化值。另一方面,形式参数不需要初始化数据。它将在图形操作时为该参数生成。


31) Ab Initio 中的检查点和阶段有什么区别?

Ab Initio 中检查点和阶段的区别列表:

检查点相位
检查点是在图形在处理过程中失败时创建的恢复点。图形由阶段组成。如果图形是分阶段创建的,则每个阶段都会分配到内存的某个部分。
检查点之后将继续其余过程。所有阶段都逐个运行。
从检查点获取数据并在更正后继续执行。在阶段中,中间文件将被删除。

32) 您对 rollup 组件有何了解?如何实现?

Rollup 是一种根据特定字段对记录进行分组的方法。如果用户希望根据特定字段值对记录进行分组,rollup 是最好的方法。它是一个多阶段转换函数,包含以下强制性函数。

  • 初始化
  • Rollup
  • 完成

33) 科学数据处理和商业数据处理之间有什么区别?

在科学数据处理中,数据通过大量的计算(即算术运算)进行处理。在此处理中,输入的数据量有限,而输出的数据量很大。另一方面,商业数据处理则完全不同。在商业数据处理中,输出量与输入数据相比是有限的。商业数据处理中的计算操作也有限。