你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn。
将 Azure 数据资源管理器与 Azure 数据工厂集成
Azure 数据工厂 (ADF) 是基于云的数据集成服务,可用于集成不同的数据存储,以及对数据执行活动。 使用 ADF 可以创建数据驱动式工作流用于协调和自动化数据移动与数据转换。 Azure 数据资源管理器是 Azure 数据工厂中支持的数据存储之一。
Azure 数据资源管理器的 Azure 数据工厂活动
Azure 数据资源管理器用户可以使用 Azure 数据工厂的各种集成:
复制活动
Azure 数据工厂复制活动用于在数据存储之间传输数据。 支持将 Azure 数据资源管理器用作源,在这种情况下,数据将从 Azure 数据资源管理器复制到任何受支持的数据存储;也可以将它用作接收器,在这种情况下,数据将从任何受支持的数据存储复制到 Azure 数据资源管理器。 有关详细信息,请参阅使用 Azure 数据工厂向/从 Azure 数据资源管理器复制数据。 有关详细演练,请参阅将数据从 Azure 数据工厂加载到 Azure 数据资源管理器。 Azure IR (Integration Runtime) 支持使用 Azure 数据资源管理器在 Azure 内部复制数据,自承载 IR 支持使用 Azure 数据资源管理器从/向本地或配置了访问控制的网络(例如 Azure 虚拟网络)中的数据存储复制数据。 有关详细信息,请参阅要使用哪个 IR。
提示
使用复制活动以及创建链接服务或数据集时,请选择数据存储“Azure 数据资源管理器(Kusto)”,而不要选择旧数据存储“Kusto”。
查找活动
查找活动用于在 Azure 数据资源管理器中执行查询。 查询结果将作为查找活动的输出返回,可以在管道中的下一个活动中使用,具体如 ADF 查找文档中所述。
除了将响应大小限制为 5,000 行和 2 MB 以外,该活动还将查询超时限制为 1 小时。
命令活动
使用命令活动可以执行 Azure 数据资源管理器管理命令。 与查询不同,管理命令可能会修改数据或元数据。 某些管理命令旨在通过 .ingest
或 .set-or-append
等命令将数据引入 Azure 数据资源管理器,或通过 .export
等命令将数据从 Azure 数据资源管理器复制到外部数据存储。
有关命令活动的详细演练,请参阅使用 Azure 数据工厂命令活动运行 Azure 数据资源管理器管理类命令。 使用管理命令复制数据有时比使用复制活动更快且更节省。 若要确定何时使用命令活动或复制活动,请参阅复制数据时在复制活动与命令活动之间进行选择。
从数据库模板批量复制
使用 Azure 数据工厂模板从数据库批量复制到 Azure 数据资源管理器是一个预定义的 Azure 数据工厂管道。 使用该模板可针对每个数据库或每个表创建多个管道,以更快地复制数据。
映射数据流
Azure 数据工厂映射数据流是一种直观的数据转换过程,允许数据工程师无需编写代码即可开发图形数据转换逻辑。 要创建数据流并将数据引入 Azure 数据资源管理器,请使用以下方法:
- 创建映射数据流。
- 将数据导出到 Azure Blob。
- 定义事件网格或 ADF 复制活动,将数据引入 Azure 数据资源管理器。
复制数据时在复制活动与 Azure 数据资源管理器命令活动之间进行选择
本部分帮助你根据数据复制需求选择正确的活动。
从/向 Azure 数据资源管理器复制数据时,可以使用 Azure 数据工厂中的两个选项:
- 复制活动。
- Azure 数据资源管理器命令活动,该活动执行某个管理命令来传输 Azure 数据资源管理器中的数据。
从 Azure 数据资源管理器复制数据
可以使用复制活动或 .export
命令从 Azure 数据资源管理器复制数据。 .export
命令执行某个查询,然后导出该查询的结果。
下表比较了用于从 Azure 数据资源管理器复制数据的复制活动和 .export
命令。
复制活动 | .export 命令 | |
---|---|---|
流程说明 | ADF 对 Kusto 执行查询,处理结果,然后将结果发送到目标数据存储。 (Azure 数据资源管理器 > ADF > 接收器数据存储) |
ADF 将 .export 管理命令发送到 Azure 数据资源管理器,后者执行该命令,然后将数据直接发送到目标数据存储。 (** Azure 数据资源管理器 > 接收器数据存储**) |
支持的目标数据存储 | 有多种支持的数据存储 | ADLSv2、Azure Blob、SQL 数据库 |
“性能” | 集中式 |
|
服务器限制 | 可以提高/禁用查询限制。 默认情况下,ADF 查询包含:
|
默认情况下,可提高或禁用查询限制:
|
提示
如果复制目标是 .export
命令支持的数据存储之一,并且没有任何复制活动功能对于满足需求而言至关重要,请选择 .export
命令。
将数据复制到 Azure 数据资源管理器
可以使用复制活动或从查询引入(.set-or-append
、.set-or-replace
、.set
、.replace)
)和从存储引入 (.ingest
) 等引入命令,将数据复制到 Azure 数据资源管理器。
下表比较了用于将数据复制到 Azure 数据资源管理器的复制活动和引入命令。
复制活动 | 从查询引入.set-or-append / .set-or-replace / .set / .replace |
从存储引入 .ingest |
|
---|---|---|---|
流程说明 | ADF 从源数据存储获取数据,将数据转换为表格格式,并执行所需的架构映射更改。 然后,ADF 将数据上传到 Azure Blob,将其拆分为区块,再下载 Blob 以将它们引入 Azure 数据资源管理器表中。 (源数据存储 > ADF > Azure Blob > Azure 数据资源管理器) |
这些命令可以执行查询或 .show 命令,并将查询结果引入表中(“Azure 数据资源管理器”>“Azure 数据资源管理器”)。 |
此命令通过从一个或多个云存储项目“提取”数据,将数据引入表中。 |
支持的源数据存储 | 多种选项 | ADLS Gen 2、Azure Blob、SQL(使用 sql_request() 插件)、Azure Cosmos DB(使用 cosmosdb_sql_request 插件),以及提供 HTTP 或 Python API 的任何其他数据存储。 | Filesystem、Azure Blob 存储、ADLS Gen 1、ADLS Gen 2 |
“性能” | 引入内容将会排队并受到管理,确保实现小规模的引入,并通过提供负载均衡、重试和错误处理来确保高可用性。 |
|
|
服务器限制 |
|
|
|
提示
- 将数据从 ADF 复制到 Azure 数据资源管理器时,请使用
ingest from query
命令。 - 对于大型数据集 (> 1 GB),请使用复制活动。
所需的权限
下表列出了执行与 Azure 数据工厂集成的各个步骤所需的权限。
步骤 | 操作 | 最低权限级别 | 注释 |
---|---|---|---|
创建链接服务 | 数据库导航 | 数据库查看者 使用 ADF 的已登录用户需获得授权才能读取数据库元数据。 |
用户可以手动提供数据库名称。 |
测试连接 | 数据库监视者或表引入者 服务主体需获得授权才能执行数据库级别的 .show 命令或表级别的引入。 |
|
|
创建数据集 | 表导航 | 数据库监视者 使用 ADF 的已登录用户必须获得授权才能执行数据库级别的 .show 命令。 |
用户可以手动提供表名称。 |
创建数据集或复制活动 | 预览数据 | 数据库查看者 服务主体必须获得授权才能读取数据库元数据。 |
|
导入架构 | 数据库查看者 服务主体必须获得授权才能读取数据库元数据。 |
如果 Azure 数据资源管理器是表格到表格复制的源,ADF 会自动导入架构,即使用户未显式导入架构也是如此。 | |
Azure 数据资源管理器作为接收器 | 创建按名称的列映射 | 数据库监视者 服务主体必须获得授权才能执行数据库级别的 .show 命令。 |
|
|
表引入者或数据库管理员 服务主体必须获得授权才能对表进行更改。 |
||
引入数据 | 表引入者或数据库管理员 服务主体必须获得授权才能对表进行更改。 |
||
Azure 数据资源管理器作为源 | 执行查询 | 数据库查看者 服务主体必须获得授权才能读取数据库元数据。 |
|
Kusto 命令 | 根据每个命令的权限级别。 |
性能
如果 Azure 数据资源管理器是源,而你使用包含 where 查询的查找、复制或命令活动,请参阅查询最佳做法了解性能信息,并参阅复制活动的 ADF 文档。
本部分介绍如何使用将 Azure 数据资源管理器用作接收器的复制活动。 Azure 数据资源管理器接收器的估计吞吐量为 11-13 MBps。 下表详细描述了影响 Azure 数据资源管理器接收器性能的参数。
参数 | 注释 |
---|---|
组件的地理邻近性 | 将所有组件放在同一区域:
|
DIU 数 | ADF 使用的每 4 个 DIU 有 1 个 VM。 仅当源是包含多个文件的基于文件的存储时,增加 DIU 才有作用。 然后,每个 VM 将并行处理一个不同的文件。 因此,复制单个大文件比复制多个小文件的延迟更高。 |
Azure 数据资源管理器群集的数量和 SKU | Azure 数据资源管理器节点的数量越多,引入处理的时间越长。 使用 dev SKU 会严重限制性能 |
并行度 | 若要从数据库中复制大量数据,请将数据分区,然后使用 ForEach 循环并行复制每个分区,或者使用“从数据库批量复制到 Azure 数据资源管理器”模板。 注意:复制活动中的“设置”>“并行度”与 Azure 数据资源管理器无关 。 |
数据处理复杂性 | 延迟根据源文件格式、列映射和压缩而有所不同。 |
运行集成运行时的 VM |
|
提示和常见错误
监视活动进度
监视活动进度时,“写入的数据”属性可能比“读取的数据”属性要大得多,因为“读取的数据”是根据二进制文件大小计算的,而“写入的数据”是在反序列化并解压缩数据后,根据内存中大小计算的。
监视活动进度时,可以看到数据已写入 Azure 数据资源管理器接收器。 查询 Azure 数据资源管理器表时,会看到数据尚未抵达。 这是因为,复制到 Azure 数据资源管理器的过程是分两个阶段完成的。
- 第一阶段读取源数据,将数据拆分为 900-MB 的区块,然后将每个区块上传到 Azure Blob。 ADF 活动进度视图会显示第一阶段。
- 将所有数据上传到 Azure Blob 后,第二个阶段随即开始。 群集节点下载 Blob,并将数据引入接收器表。 然后,Azure 数据资源管理器表中会显示这些数据。
因转义不当而无法引入 CSV 文件
Azure 数据资源管理器要求 CSV 文件遵循 RFC 4180。 它要求:
- 包含需要转义的字符(例如 " 和新行)的字段应以 " 字符开头和结尾,不使用空格。 字段中的所有 " 字符都使用双 " 字符 ( "" ) 进行转义。 例如, "Hello, ""World""" 是一个有效的 CSV 文件,所包含的单个记录有一个内容为 Hello, "World" 的列或字段。
- 文件中的所有记录必须有相同的列数和字段数。
Azure 数据工厂允许反斜杠(转义)字符。 如果使用 Azure 数据工厂生成一个包含反斜杠字符的 CSV 文件,则无法将该文件引入 Azure 数据资源管理器。
示例
以下文本值:Hello, "World"
ABC DEF
"ABC\D"EF
"ABC DEF
应该会在相应的 CSV 文件中显示如下:"Hello, ""World"""
"ABC DEF"
"""ABC\D""EF"
"""ABC DEF"
通过使用默认转义字符(反斜杠),以下 CSV 将能用于 Azure 数据资源管理器:"Hello, "World""
"ABC DEF"
""ABC\D"EF"
""ABC DEF"
嵌套的 JSON 对象
将 JSON 文件复制到 Azure 数据资源管理器时,请注意:
- 不支持数组。
- 如果 JSON 结构包含对象数据类型,Azure 数据工厂会将对象的子项平展,并尝试将每个子项映射到 Azure 数据资源管理器表中的不同列。 若要将整个对象项映射到 Azure 数据资源管理器中的单个列,请执行以下操作:
- 将整个 JSON 行引入 Azure 数据资源管理器中的单个动态列。
- 使用 Azure 数据工厂的 JSON 编辑器手动编辑管道定义。 在“映射”中,执行以下操作:
- 删除为每个子项创建的多个映射,并添加单个可将对象类型映射到表列的映射。
- 在右方括号后面添加一个逗号,后跟:
"mapComplexValuesToString": true
。
复制到 Azure 数据资源管理器时指定其他属性
可以通过在管道的复制活动中指定其他引入属性来添加这些属性。
添加属性
在 Azure 数据工厂中,选择“创作”铅笔图标。
在“管道”下,选择要添加其他引入属性的管道。
在“活动”画布中,选择“复制数据”活动。
在活动详细信息中,选择“接收器”,然后展开“其他属性”。
选择“新建”,根据需要选择“添加节点”或“添加数组”,然后指定引入属性名称和值。 重复此步骤以添加更多属性。
完成后保存并发布管道。