30+ 个最常问的 Azure Data Factory 访谈问题及答案

2025年3月17日 | 阅读 15 分钟

1) 什么是 Azure Data Factory?/ 您对 Azure Data Factory 有何理解?

Azure Data Factory 是一个基于云的、完全托管的数据集成 ETL 服务,可自动化数据移动和转换。它使用户能够在云中创建数据驱动的工作流,并自动化数据移动和转换。Azure Data Factory 也称为 ADF,它使用户能够创建和调度数据驱动的工作流(称为管道),这些工作流可以从不同的数据存储中检索数据,并使用 HDInsight Hadoop、Spark、Azure Data Lake Analytics 和 Azure Machine Learning 等计算服务来处理和转换数据。

它被称为 Data Factory,是因为它的工作方式类似于工厂运行设备将原材料转化为成品。同样,Azure Data Factory 使用各种服务来收集原始数据并将其转化为可供使用的信息。

我们可以使用 Azure Data Factory 创建数据驱动的工作流,以便在本地和云数据存储之间移动数据。它还使我们能够通过 Data Flows 来处理和转换数据。我们可以将数据处理执行Azure 云服务或我们自己的自托管计算环境(如 SSIS、SQL Server 或 Oracle)上。


2) Azure Data Factory 的需求是什么?ADF 服务的作用是什么?

ADF 服务或 Azure Data Factory 主要用于自动化从云端或本地数据中心托管的关系型和非关系型数据源之间检索和复制数据。

我们可以通过以下场景更好地理解它

如今,我们需要处理大量数据,并且我们知道这些数据来自不同的来源。假设我们需要将这些特定数据移到云端,那么我们就必须遵循一些步骤来移动这些数据。

我们从不同来源获取的数据可能格式不同。这些不同的来源将以不同的方式传输或通道化数据。当我们把这些数据带到云端或特定的本地存储时,我们必须确保这些数据得到妥善管理。因此,我们需要转换数据并删除不必要的部分。

我们可以在传统数据仓库中完成这项任务,但存在一些缺点。有时,我们需要使用一些自定义应用程序来单独处理所有这些过程,这非常耗时,并且集成所有这些来源是一项繁琐的工作。我们找到了一个方法来自动化这个过程或创建适当的工作流来处理所有这些问题。这就是为什么需要 Azure Data Factory。它以更易于管理或组织的方式自动化了整个过程。Azure Data Factory 提供了强大的工具,如 ELT 工具,用于大多数大数据解决方案中的数据摄取。


3) Azure Data Factory 中使用的不同组件是什么?

Azure Data Factory 由多个组件组成。一些组件如下

  • 管道 (Pipeline): 管道是活动的逻辑容器。
  • 活动 (Activity): 它指定了 Data Factory 管道中的执行步骤,主要用于数据摄取和转换。
  • 数据集 (Dataset): 数据集指定了管道活动中使用的数据的指针。
  • 映射数据流 (Mapping Data Flow): 它指定了数据转换的 UI 逻辑。
  • 链接服务 (Linked Service): 它指定了管道活动中使用的用于数据源的描述性连接字符串。
  • 触发器 (Trigger): 它指定了管道执行的时间。
  • 控制流 (Control flow): 它用于控制管道活动的执行流程。

4) 您对集成运行时有什么理解?

集成运行时是 Azure Data Factory 使用的计算基础结构,可在各种网络环境中提供一些数据集成功能。

以下是三种集成运行时的类型

  • Azure 集成运行时 (Azure Integration Runtime): Azure 集成运行时用于在云数据存储之间复制数据。它可以将活动分派给不同类型的计算服务,如 Azure HDinsight 或 SQL server,并在这些服务中进行转换。
  • 自托管集成运行时 (Self Hosted Integration Runtime): 自托管集成运行时是一种与 Azure 集成运行时具有相同代码的软件。但不同之处在于它安装在本地计算机或虚拟网络中的虚拟机上。它可以运行公共云和私有网络数据存储之间的复制活动。它还可以将转换活动分派给私有网络中的计算资源。使用自托管集成运行时的主要原因是 Data Factory 无法直接访问本地数据源,因为它们位于防火墙后面。
  • Azure SSIS 集成运行时 (Azure SSIS Integration Runtime): 我们可以使用 Azure SSIS 集成运行时在托管环境中本地执行 SSIS 包。因此,当我们必须将 SSIS 包迁移到 Data Factory 时,就会使用它。

5) Azure Data Factory 中集成运行时的数量有限制吗?

Azure Data Factory 的集成运行时实例数量没有限制。但对于 SSIS 包执行,每个订阅中集成运行时可使用的 VM 核心数量有限制。


6) Azure Data Lake 和 Azure Data Warehouse 之间的主要区别是什么?

Azure Data Lake 和 Azure Data Warehouse 都广泛用于存储大数据,但它们并非同义词,也不能互换使用。Azure Data Lake 是大量原始数据的集合。另一方面,Azure Data Warehouse 是结构化、经过处理和过滤的数据的存储库,这些数据已经为特定目的进行了处理。

以下是 Azure Data Lake 和 Azure Data Warehouse 之间主要区别的列表

Azure Data LakeAzure Data Warehouse
Azure Data Lake 具有原始数据结构。原始数据是指尚未为特定目的处理过的数据。Azure Data Warehouse 具有已处理的数据结构。已处理的数据意味着更大的受众可以轻松理解的数据。
它主要用于存储原始和未处理的数据。它主要用于存储已处理的数据,通过不维护可能永远不会使用的数据来节省存储空间。
Azure Data Lake 是 Azure Data Warehouse 的补充。换句话说,我们可以说,如果您在数据湖中有数据,它也可以存储在数据仓库中,但您必须遵循某些规则。Azure Data Warehouse 是一种传统的数据存储方式。它是最广泛使用的大数据存储之一。
存储在 Azure Data Lake 中的数据目的尚未确定。存储在 Azure Data Warehouse 中的数据是有价值的,因为它目前正在使用中。
数据科学家主要使用它,因为数据量大且未处理。业务专业人士主要使用它,因为数据已处理并且可以被更广泛的受众轻松理解。
Azure Data Lake 中的数据高度可访问且更新快速。Azure Data Warehouse 中的数据更改更复杂且成本更高。
它使用一种语言来处理任何格式的数据。它使用 SQL,因为数据已处理。
Azure Data Lake 需要比数据仓库大得多的存储容量。它通常需要较小的存储容量。
它非常适合机器学习。它非常适合组织内的特定目的。
在 Azure Data Lake 中,模式在数据成功存储后定义。在 Azure Data Warehouse 中,模式在存储数据之前定义。
它遵循 ELT(提取、加载和转换)过程。它遵循 ETL(提取、转换和加载)过程。
它存储未处理的数据,因此有时会在没有适当数据质量的情况下产生数据沼泽。它不存储任何垃圾数据,因此存储空间不会浪费在可能永远不会使用的数据上。
它是进行深入分析的最佳平台。它是操作人员的最佳平台。

7) Azure 中的 Blob 存储是什么?它的重要功能是什么?

在 Microsoft Azure 中,Blob 存储是最基本的组件之一。它主要用于存储大量的非结构化数据,如文本或二进制数据。企业也用它向外部公开数据或安全地保存应用程序数据。Blob 存储用于向全世界公开数据。它最常用于流式传输音频或视频、存储备份、灾难恢复、分析等方面的数据。它也可以用于创建 Data Lakes 来执行分析。

以下是一些 Blob 存储主要应用场景的列表

  • 它存储文件,以便于分布式访问数据。
  • 它也可以用于存储数据以进行数据恢复、归档和备份。
  • 它可以存储音频和视频。
  • 它可用于直接浏览文档和图像。

8) Azure Data Factory 中的数据集和链接服务之间的主要区别是什么?

数据集指定了链接服务描述的数据存储的引用。当我们从 SQL Server 实例将数据放入数据集时,数据集会指示包含目标数据的表的名称或返回来自不同表的数据的查询。

链接服务指定了用于连接到数据存储的连接字符串的描述。例如,当我们从 SQL Server 实例将数据放入链接服务时,链接服务会包含 SQL Server 实例的名称以及用于连接到该实例的凭据。


9) Data Lake Storage 和 Blob Storage 之间的主要区别是什么?

以下是 Data Lake Storage 和 Blob Storage 之间主要区别的列表

Azure Data Lake StorageAzure Blob 存储
Azure Data Lake Storage 的主要目的是为大数据分析工作负载提供优化的存储。因此,我们可以说它是大数据分析工作负载的优化存储解决方案。Azure Blob Storage 是一个通用的对象存储系统,适用于各种存储场景和大数据分析。
Azure Data Lake Storage 的结构遵循分层文件系统。Azure Blob Storage 的结构遵循具有扁平命名空间的对象存储。
Azure Data Lake Storage 包含文件夹,数据以文件形式存储在其中。Azure Blob Storage 使我们能够创建包含数据存储在其中的容器的存储帐户。
它主要用于存储批处理、交互式、流式分析和机器学习数据,如日志文件、IoT 数据、点击流、大型数据集等。它可以用于存储任何文本或二进制数据,例如应用程序后端、备份数据、流媒体媒体存储以及通用数据。它还为分析工作负载、批处理、交互式、流式分析和机器学习数据(如日志文件、IoT 数据、点击流、大型数据集等)提供了完整支持。
它使用与 WebHDFS 兼容的 REST API 作为服务器端 API。它使用 Azure Blob Storage REST API 作为服务器端 API。
其数据操作和身份验证基于 Azure Active Directory 身份。其数据操作和身份验证基于共享密钥、帐户访问密钥和共享访问签名密钥。

10) Azure Data Factory 支持多少种类型的触发器?

以下是 Azure Data Factory 支持的三种触发器类型

  1. 滚动触发器 (Tumbling Window Trigger): 滚动触发器在周期性时间间隔上执行 Azure Data Factory 管道。它也用于维护管道的状态。
  2. 事件驱动触发器 (Event-based Trigger): 事件驱动触发器响应与 blob 存储相关的任何事件。当您添加或删除 blob 存储时,可以创建这些触发器。
  3. 计划触发器 (Schedule Trigger): 计划触发器按照固定时间表执行 Azure Data Factory 管道。

11) 在 Azure Data Factory 中创建 ETL 流程的步骤是什么?

当我们处理数据集以从 Azure SQL Server 数据库检索数据时,处理后的数据将存储在 Data Lake Store 中。

以下是创建 ETL 流程必须遵循的步骤

  • 首先,我们必须为链接的数据存储(SQL Server 数据库)创建一个服务。
  • 假设我们有一个汽车数据集。
  • 我们可以为这个汽车数据集的目的地数据存储(Azure Data Lake)创建一个链接服务。
  • 现在,我们需要为数据存储创建数据集。
  • 之后,创建管道和复制活动。
  • 最后一步,插入一个触发器并安排您的管道。

12) 如何安排管道?

有两种方法可以安排管道

  1. 我们可以使用计划触发器或时间窗口触发器来安排管道。
  2. 触发器使用固定时钟日历表定期或以基于日历的重复模式安排管道(例如,周一晚上 6:00 和周四晚上 9:00)。

13) Azure HDInsight 和 Azure Data Lake Analytics 之间的主要区别是什么?

以下是 Azure HDInsight 和 Azure Data Lake Analytics 之间主要区别的列表

Azure HDInsightAzure Data Lake Analytics
Azure HDInsight 是平台即服务 (PaaS)Azure Data Lake Analytics 是软件即服务 (SaaS)。
如果您想在 Azure HDInsight 中处理数据,您必须用预定义的节点配置集群。您还可以使用 Pig 或 Hive 等语言来处理数据。在 Azure Data Lake Analytics 中,我们必须传递为数据处理编写的查询。Azure Data Lake Analytics 进一步创建计算节点来处理数据集。
由于集群是用 Azure HDInsight 配置的,因此我们可以根据需要创建和控制它们。它还允许用户无限制地使用 Spark 和 Kafka。Azure Data Lake Analytics 在配置和定制方面没有提供太多灵活性,但 Azure 会为用户自动管理。此外,它还允许用户利用 USQL 和 dotnet 来处理数据。

14) Azure Data Factory 的顶层概念是什么?

以下是 Azure Data Factory 四个基本顶层概念的列表

  1. 管道 (Pipeline): 管道是 Azure Data Factory 最重要的顶层概念之一。它充当容器,其中包含许多过程,活动是单个过程。
  2. 活动 (Activities): 活动概念指定了管道中的过程步骤。一个管道可以有一个或多个活动。活动可以是任何东西。例如,诸如查询数据集或将数据集从一个源移动到另一个源的过程。
  3. 数据集 (Datasets): 数据集指定了数据源。换句话说,我们可以说数据集是包含我们数据的结构。
  4. 链接服务 (Linked Services): 链接服务是连接到资源或其他服务时非常重要的存储信息。例如,如果您有一个 SQL Server,您需要一个连接到外部设备的连接字符串。在这里,您必须提及数据源和目标。

15) Azure Data Factory 中面向高级用户的丰富跨平台 SDK 有哪些?

Azure Data Factory V2 提供了一套丰富的 SDK,我们可以使用它们通过我们喜欢的 IDE 来编写、管理和监视管道。面向高级用户的流行跨平台 SDK 如下

  • Python SDK
  • C# SDK
  • PowerShell CLI
  • 用户还可以使用文档化的 REST API 来与 Azure Data Factory V2 进行交互。

16) 如何向 Azure Data Factory 中的管道运行传递参数?

在 Azure Data Factory 中,参数是第一类顶层概念。我们可以通过定义管道级别的参数并在按需执行管道运行时或使用触发器时传递参数来向管道运行传递参数。


17) Azure Data Factory 中的映射数据流和数据整理数据流转换活动之间的主要区别是什么?

在 Azure Data Factory 中,映射数据流和数据整理数据流转换活动之间的主要区别如下

映射数据流活动是一种视觉设计的data transformation activity,它使用户能够设计图形化的数据转换逻辑。它不需要用户成为专家级开发人员。它作为 ADF 管道中的一个活动,在 ADF 完全托管的、横向扩展的 Spark 群集上执行。

另一方面,数据整理数据流活动是一种无代码的数据准备活动。它与 Power Query Online 集成,使 Power Query M 函数可用于通过 Spark 执行进行数据整理。


18) 是否可以为管道参数定义默认值?

是的,我们可以轻松地在管道中为参数定义默认值。


19) 如何使用 Azure Data Factory 中的其他 80 种数据集类型来访问数据?

Azure Data Factory 提供了一个映射数据流功能,允许 Azure SQL 数据库、数据仓库、Azure Blob Storage 中的分隔文本文件或 Azure Data Lake Storage 原生生成源和宿的工具。我们可以使用复制活动从任何其他连接器中提取数据,然后执行数据流活动来转换数据。


20) 管道中的活动是否可以消耗传递给管道运行的参数?

管道中的每个活动都可以通过 @parameter 结构来消耗传递给管道并运行的参数值。


21) 在 Azure Data Factory 中执行 SSIS 包需要什么?

我们需要创建一个 SSIS IR,并在 Azure SQL 数据库或 Azure SQL 托管实例中托管一个 SSISDB 目录,以便在 Azure Data Factory 中执行 SSIS 包。


22) 活动的输出属性是否可以在另一个活动中消耗?

活动输出属性可以通过 @activity 结构在后续活动中消耗。


23) Azure Data Factory 支持哪些类型的计算环境来执行转换活动?

以下是 Azure Data Factory 支持的两种计算环境类型,用于执行转换活动

  1. 按需计算环境 (On-demand compute environment): 按需计算环境是由 Azure Data Factory 提供的一个完全托管的计算环境。在此计算环境类型中,会创建一个集群来执行转换活动,并在活动完成后自动删除。
  2. 自创建环境 (Self-created environment): 在此计算环境类型中,我们需要借助 Azure Data Factory 自己创建和管理计算环境。

24) 如何处理 Azure Data Factory 中活动输出中的 null 值?

我们可以使用表达式中的 @coalesce 结构来优雅地处理 Azure Data Factory 中活动输出中的 null 值。


25) Azure Data Factory 是否需要编码知识?

不,Azure Data Factory 不需要具备良好的编码知识。Azure Data Factory 提供了 90 多个内置连接器,可以使用映射数据流活动来转换数据,而无需编程技能或 Spark 集群知识。它还可以让我们非常快速地创建工作流。


26) 使用哪个 Azure Data Factory 版本来创建数据流?

我们可以使用 Azure Data Factory V2 版本来创建数据流。


27) Azure Data Lake Storage Gen2 (ADLS Gen2) 中有两个安全级别是什么?

Azure Data Lake Storage Gen2 提供了一个访问控制模型,支持两个安全级别,即 Azure 基于角色的访问控制 (Azure RBAC) 和类似 POSIX 的访问控制列表 (ACL)。

  1. Azure 基于角色的访问控制 (RBAC): Azure 基于角色的访问控制包含读取者、贡献者、所有者等内置 Azure 角色,或自定义角色。通常,RBAC 分配有两个原因。第一个原因是指定谁可以管理服务(即更新存储帐户的设置和属性)。第二个原因是允许使用内置数据浏览器工具,这需要读取者权限。
  2. Azure 访问控制列表 (ACL): Azure 访问控制列表指定用户可以读取、写入或执行哪些数据对象。ACL 符合 POSIX 标准,因此熟悉 Unix 或 Linux 的用户会感到熟悉。

28) Azure Data Factory 是一个 ETL 工具吗?

是的,Azure Data Factory 是市场上最好的 ETL 流程工具之一。ETL 流程代表提取、转换和加载。它是一个数据集成过程,将来自多个源的数据合并到一个单一的、一致的数据存储中,并将其加载到数据仓库或其他目标系统中。Azure Data Factory 是最好的工具,因为它简化了整个数据迁移过程,而无需编写任何复杂的算法。


29) 您对 Azure 表存储有什么理解?

Azure 表存储是一项服务,它使用户能够将结构化数据存储在云中,并提供具有设计的模式的密钥存储。它是现代应用程序快速有效的存储。


30) 如何监视在调试模式下执行的管道的执行情况?

我们可以检查 Azure Data Factory 监视窗口下的管道的输出选项卡,以监视在调试模式下执行的管道的执行情况。


31) ETL 流程涉及哪些步骤?

ETL 流程代表提取、转换和加载。ETL 流程主要涉及四个步骤

  1. 连接和收集 (Connect and Collect): 用于帮助在本地和云数据存储之间移动数据。
  2. 转换 (Transform): 它使用户能够使用 HDInsight Hadoop、Spark 等计算服务来收集数据。
  3. 发布 (Publish): 用于帮助将数据加载到 Azure 数据仓库、Azure SQL 数据库、Azure Cosmos DB 等。
  4. 监视 (Monitor): 主要用于通过 Azure Monitor、API 和 PowerShell、Log Analytics 以及 Azure 门户上的健康面板来支持管道监视。

32) 使用 Azure Data Factory 从本地 SQL Server 实例复制数据时,应该使用哪个集成运行时?

要使用 Azure Data Factory 从本地 SQL Server 实例复制数据,我们必须在托管 SQL Server 实例的本地计算机上安装自托管集成运行时。


33) 从私有预览版到有限公开预览版,数据流方面可以看到哪些变化?

以下是关于数据流从私有预览到有限公开预览的一些重要变化列表

  • 我们不再需要自带 Azure Databricks 集群。
  • 我们仍然可以使用 Data Lake Storage Gen 2 和 Blob Storage 来存储这些文件。
  • Azure Data Factory 将管理集群的创建和拆卸过程。
  • Blob 数据集和 Azure Data Lake Storage Gen 2 被拆分为分隔文本和 Apache Parquet 数据集。
  • 我们可以为这些存储引擎使用适当的链接服务。