你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn。
重要
Azure Synapse Analytics 数据资源管理器(预览版)将于 2025 年 10 月 7 日停用。 在此日期之后,Synapse 数据资源管理器上运行的工作负荷将被删除,关联的应用程序数据将丢失。 强烈建议迁移到 Microsoft Fabric 中的 Eventhouse 。
Microsoft云迁移工厂(CMF)计划旨在帮助客户迁移到 Fabric。 该计划向客户免费提供动手键盘资源。 这些资源在 6-8 周内分配,并具有预定义和同意的范围。 客户提名可以通过 Microsoft 帐户团队接受,或者直接提交《帮助请求》给 CMF 团队。
Azure Synapse 数据资源管理器是一项快速且高度可缩放的数据探索服务,适用于日志和遥测数据。 Azure Synapse 数据资源管理器提供从事件中心、IoT 中心和写入 Blob 容器的 Blob 的引入(数据加载)。
本文介绍如何使用事件网格数据连接将 Blob 从存储帐户引入 Azure Synapse 数据资源管理器。 你将创建一个事件网格数据连接,用于设置 Azure 事件网格 订阅。 事件网格订阅通过 Azure 事件中心将事件从存储帐户路由到数据资源管理器。 然后,你将看到整个系统中数据流的示例。
有关从事件网格引入到数据资源管理器的常规信息,请参阅连接到事件网格。
先决条件
一份 Azure 订阅。 创建免费 Azure 帐户。
使用 Synapse Studio 或 Azure 门户创建数据资源管理器池
创建数据资源管理器数据库。
在 Synapse Studio 的左窗格中,选择“数据”。
选择+(添加新资源)>数据探索器池,并使用以下信息:
设置 建议值 DESCRIPTION 池名称 contosodataexplorer 要使用的数据资源管理器池的名称 名字 TestDatabase 该数据库名称在群集中必须是唯一的。 默认保留期 365 保证数据可供查询的时间跨度(以天为单位)。 时间跨度从引入数据时算起。 默认缓存期 31 将频繁查询的数据保存在 SSD 存储或 RAM 中(而不是长期存储)的时间跨度(以天为单位)。 选择“创建”以创建数据库。 创建过程通常需要不到一分钟的时间。
- 创建事件中心将向其发送数据的目标表
在 Synapse Studio 的左侧窗格中,选择“开发”。
在“KQL 脚本”下,选择“+”(添加新资源)>“KQL 脚本”。 可在右侧窗格中命名脚本。
在“连接到”菜单中,选择“contosodataexplorer”。
在“使用数据库”菜单中,选择“TestDatabase”。
粘贴以下命令,然后选择“运行”以创建表。
.create table TestTable (TimeStamp: datetime, Value: string, Source:string)
小提示
确认是否已成功创建数据表。 在左侧窗格中,先选择“数据”,然后打开“contosodataexplorer”的更多菜单,最后选择“刷新”。 在“contosodataexplorer”下,展开“表”,并确保“TestTable”表已显示在列表中。
将以下命令复制到窗口中,然后选择“运行”将传入的 JSON 数据映射到表 (TestTable) 的列名和数据类型。
.create table TestTable ingestion json mapping 'TestMapping' '[{"column":"TimeStamp","path":"$.TimeStamp"},{"column":"Value","path":"$.Value"},{"column":"Source","path":"$.Source"}]'
- 创建存储帐户。
- 可以在
BlobStorage
、StorageV2
或 Data Lake Storage Gen2 的 Azure 存储帐户上设置事件网格通知订阅。
登录到 Azure 门户
登录到 Azure 门户。
创建事件网格数据连接
现在,将存储帐户连接到数据资源管理器,以便流入存储的数据流式传输到测试表。 可以在数据资源管理器下的 Azure 门户中创建此连接。
在你创建的数据资源管理器池下,选择“数据库”>“TestDatabase”。
选择“数据连接”,然后选择“添加数据连接”。
数据连接 - “基本信息”选项卡
选择连接类型:Blob 存储。
使用以下信息填写表格:
设置 建议的值 字段说明 数据连接名称 测试电网连接 要在Data Explorer中创建的连接的名称。 存储帐户订阅 订阅 ID 存储帐户所在的订阅 ID。 存储帐户 gridteststorage1 之前创建的存储帐户的名称。 事件类型 Blob 已创建 或 Blob 已重命名 触发引入的事件类型。 “已重命名 Blob”仅支持 ADLSv2 存储。 支持的类型包括:Microsoft.Storage.BlobCreated 或 Microsoft.Storage.BlobRenamed。 资源创建 自动 确定是否希望数据资源管理器为你创建一个事件网格订阅、一个事件中心命名空间和一个事件中心。 如果要跟踪特定主题,请选择 “筛选设置 ”。 按如下所示设置通知的筛选器:
-
前缀字段是主题的文本前缀。 由于应用的模式是 startswith,因此可以跨越多个容器、文件夹或 blob 应用。 不允许通配符。
- 若要在 Blob 容器上定义筛选器,必须按如下所示设置字段:
/blobServices/default/containers/[container prefix]
- 若要对 Blob 前缀(或 Azure Data Lake Gen2 中的文件夹)定义筛选器,必须按如下所示设置字段:
/blobServices/default/containers/[container name]/blobs/[folder/blob prefix]
- 若要在 Blob 容器上定义筛选器,必须按如下所示设置字段:
- “后缀”字段是 Blob 的文本后缀。 不允许通配符。
- “区分大小写”字段指示前缀和后缀筛选器是否区分大小写
- 有关筛选事件的详细信息,请参阅 Blob 存储事件。
-
前缀字段是主题的文本前缀。 由于应用的模式是 startswith,因此可以跨越多个容器、文件夹或 blob 应用。 不允许通配符。
选择 “下一步:引入属性”。
注释
建议在选项可用于群集后立即更新数据连接以使用托管标识访问存储帐户。
数据连接 - 引入属性选项卡
使用以下信息填写表格。 表和映射名称区分大小写:
引入属性:
设置 建议的值 字段说明 表名称 TestTable 在“TestDatabase”中创建的表。 数据格式 JSON 格式 支持的格式包括 Avro、CSV、JSON、MULTILINE JSON、ORC、PARQUET、PSV、SCSV、SOHSV、TSV、TXT、TSVE、APACHEAVRO、RAW 和 W3CLOG。 支持的压缩选项是 Zip 和 Gzip。 映射 TestMapping 在 TestDatabase 中创建的映射,它将传入的 JSON 数据映射到 TestTable 的列名称和数据类型。 高级设置 我的数据包含标头 忽略标头。 支持 *SV 类型文件。 注释
无需指定所有默认路由设置。 部分设置也是接受的。
选择 “下一步:查看 + 创建”
数据连接 - 查看 + 创建选项卡
查看自动为你创建的资源,然后选择“ 创建”。
部署
等待部署完成。 如果部署失败,请选择失败阶段旁边的 操作详情 以获取失败原因的具体信息。 选择 “重新部署 ”以再次尝试部署资源。 可以在部署之前更改参数。
生成示例数据
现在,数据资源管理器和存储帐户已连接,可以创建示例数据。
将 Blob 上传到存储容器
我们将使用一个小型 shell 脚本,该脚本会发出几个基本的 Azure CLI 命令来与 Azure 存储资源交互。 此脚本执行以下作:
- 在存储帐户中创建一个新容器。
- 将现有文件(作为 blob)上传到该容器。
- 列出容器中的 Blob。
可以使用 Azure Cloud Shell 直接在门户中执行脚本。
将数据保存到文件中,并使用此脚本上传它:
{"TimeStamp": "1987-11-16 12:00","Value": "Hello World","Source": "TestSource"}
#!/bin/bash
### A simple Azure Storage example script
export AZURE_STORAGE_ACCOUNT=<storage_account_name>
export AZURE_STORAGE_KEY=<storage_account_key>
export container_name=<container_name>
export blob_name=<blob_name>
export file_to_upload=<file_to_upload>
export destination_file=<destination_file>
echo "Creating the container..."
az storage container create --name $container_name
echo "Uploading the file..."
az storage blob upload --container-name $container_name --file $file_to_upload --name $blob_name --metadata "rawSizeBytes=1024"
echo "Listing the blobs..."
az storage blob list --container-name $container_name --output table
echo "Done"
注释
若要达到最佳引入性能,必须提供为引入提交的已压缩的 Blob 的未压缩大小。 由于事件网格通知仅包含基本详细信息,因此必须显式传达大小信息。 可以通过在 Blob 元数据上用以字节为单位的未压缩数据大小设置 rawSizeBytes
属性来提供 未压缩 的大小信息。
重命名 Blob
如果要从 ADLSv2 存储引入数据,并且已将“blob 已重命名”定义为数据连接的事件类型,则 blob 引入的事件触发器为“blob 重命名”。 若要重命名 Blob,请导航到 Azure 门户中的 Blob,右键单击该 Blob 并选择“ 重命名:
摄取属性
可以通过 blob 元数据指定 blob 引入的引入属性。
注释
数据资源管理器不会在引入 Blob 后删除它。 将 blob 保留三到五天。 使用 Azure Blob 存储生命周期 来管理 Blob 删除。
查看数据流
注释
数据探索器具有用于优化数据引入过程的聚合(批处理)策略。 默认情况下,策略配置为 5 分钟。 如果需要,稍后可以更改策略。 在本文中,预计延迟为几分钟。
在 Azure 门户中的事件网格下,可以看到应用运行时活动的峰值。
若要检查到目前为止已向数据库发送的消息数,请在测试数据库中运行以下查询。
TestTable | count
若要查看消息的内容,请在测试数据库中运行以下查询。
TestTable
结果集应如下图所示:
清理资源
如果不打算再次使用事件网格,请清理自动创建的事件网格订阅、事件中心命名空间和事件中心,以避免产生费用。
在 Azure 门户中,转到左侧菜单并选择 “所有资源”。
搜索事件中心命名空间并选择“ 删除 ”将其删除:
在“删除资源”窗体中,确认删除以删除事件中心命名空间和事件中心资源。
转到存储帐户。 在左侧菜单中,选择 “事件”
在关系图下方,选择事件网格订阅,然后选择“ 删除 ”将其删除:
若要删除事件网格数据连接,请转到数据资源管理器群集。 在左侧菜单中,选择“ 数据库”。
选择数据库 TestDatabase:
在左侧菜单中,选择 “数据引入”:
选择数据连接 测试网格连接 ,然后选择“ 删除 ”将其删除。