你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn

将数据从事件中心引入到 Azure Synapse 数据资源管理器

Azure Synapse 数据资源管理器是一项快速且高度可缩放的数据探索服务,适用于日志和遥测数据。 Azure Synapse 数据资源管理器提供从事件中心、IoT 中心和写入 blob 容器的 blob 的引入(数据加载)。

Azure Synapse 数据资源管理器提供从事件中心引入(加载数据)的功能,是一个大数据流式处理平台和事件引入服务。 事件中心每秒可以近实时处理数百万个事件。 在本文中,你将创建事件中心,从 Azure Synapse 数据资源管理器中连接到该事件中心,并查看通过此系统的数据流。

先决条件

  • Azure 订阅。 创建免费 Azure 帐户

  • 使用 Synapse StudioAzure 门户创建数据资源管理器池

  • 创建数据资源管理器数据库。

    1. 在 Synapse Studio 的左窗格中,选择“数据”。

    2. 选择“+”(添加新资源)>“数据资源管理器池”,并使用以下信息:

      设置 建议值 说明
      池名称 contosodataexplorer 要使用的数据资源管理器池的名称
      名称 TestDatabase 该数据库名称在群集中必须是唯一的。
      默认保留期 365 保证数据可供查询的时间跨度(以天为单位)。 时间跨度从引入数据时算起。
      默认缓存期 31 使频繁查询的数据在 SSD 存储或 RAM(而不是更长期的存储)中保持可用的时间跨度(以天为单位)。
    3. 选择“创建”以创建数据库。 创建过程通常需要不到一分钟的时间。

  • 创建事件中心将向其发送数据的目标表

    1. 在 Synapse Studio 的左侧窗格中,选择“开发”。

    2. 在“KQL 脚本”下,选择“+”(添加新资源)>“KQL 脚本”。 可在右侧窗格中命名脚本。

    3. 在“连接到”菜单中,选择“contosodataexplorer”。

    4. 在“使用数据库”菜单中,选择“TestDatabase”。

    5. 粘贴以下命令,然后选择“运行”以创建表。

      .create table TestTable (TimeStamp: datetime, Name: string, Metric: int, Source:string)
      

      提示

      确认是否已成功创建表。 在左侧窗格中,依次选择“数据”、“contosodataexplorer”菜单和“刷新”。 在“contosodataexplorer”下,展开“表”,并确保“TestTable”表已显示在列表中。

    6. 将以下命令复制到窗口中,然后选择“运行”将传入的 JSON 数据映射到表 (TestTable) 的列名和数据类型。

      .create table TestTable ingestion json mapping 'TestMapping' '[{"column":"TimeStamp", "Properties": {"Path": "$.timeStamp"}},{"column":"Name", "Properties": {"Path":"$.name"}} ,{"column":"Metric", "Properties": {"Path":"$.metric"}}, {"column":"Source", "Properties": {"Path":"$.source"}}]'
      
  • 建议为数据连接使用用户分配的托管标识系统分配的托管标识(可选)。

  • 生成数据并将其发送到事件中心的示例应用。 将示例应用下载到系统。

  • 用于运行示例应用的 Visual Studio 2019

登录到 Azure 门户

登录 Azure 门户

创建事件中心

在 Azure 门户中使用 Azure 资源管理器模板创建事件中心。

  1. 若要创建事件中心,请使用以下按钮开始部署。 右键单击并选择“在新窗口中打开”,以便按本文中的剩余步骤操作。

    Button to deploy the Resource Manager template to Azure.

    单击“部署到 Azure”按钮可转到 Azure 门户。

  2. 选择要在其中创建事件中心的订阅,并创建名为 test-hub-rg 的资源组。

    Create a resource group

  3. 使用以下信息填写窗体。

    对下表中未列出的任何设置使用默认值。

    设置 建议的值 字段说明
    订阅 你的订阅 选择要用于事件中心的 Azure 订阅。
    资源组 test-hub-rg 创建新的资源组。
    位置 美国西部 对于本文,请选择美国西部。 对于生产系统,请选择最能满足你需求的区域。 在与 Azure Synapse 数据资源管理器群集相同的位置创建事件中心命名空间以获得最佳性能(对于具有高吞吐量的事件中心命名空间来说最重要)。
    命名空间名称 唯一的命名空间名称 选择用于标识命名空间的唯一名称。 例如,mytestnamespace。 域名 servicebus.windows.net 将追加到所提供的名称。 字段只能包含字母、数字和连字符。 名称必须以字母开头,并且必须以字母或数字结尾。 值长度必须介于 6 到 50 个字符之间。
    事件中心名称 test-hub 事件中心位于命名空间下,该命名空间提供唯一的范围容器。 事件中心名称在命名空间中必须唯一。
    使用者组名称 test-group 使用者组允许多个使用应用程序各自具有事件流的单独视图。
  4. 选择“查看 + 创建”。

  5. 查看创建的资源的“摘要”。 选择“创建”,这会确认你要在订阅中创建资源。

    Screen shot of Azure portal for reviewing and creating Event Hub namespace, Event Hub, and consumer group.

  6. 在工具栏上选择“通知”以监视预配过程。 部署成功可能需要几分钟时间,但现在可以继续执行下一步。

    Notifications icon

身份验证注意事项

根据向事件中心进行身份验证时要使用的标识的类型,你可能需要进行一些其他配置。

  • 如果使用用户分配的托管标识向事件中心进行身份验证,请访问事件中心 >“网络”,然后在“允许从以下位置访问”下,选择“所有网络”并保存所做的更改。

    Screenshot of the Event Hub networking page, showing the selection of allowing access to all networks.

  • 如果使用系统分配的托管标识向事件中心进行身份验证,请访问事件中心 >“网络”,然后允许来自所有网络的访问,或者在“允许从以下位置访问”下,选择“所选网络”,然后选择“允许受信任的 Microsoft 服务绕过此防火墙”,并保存更改。

    Screenshot of the Event Hub networking page, showing the selection of allowing access to trusted services.

连接到事件中心

现在,请从数据资源管理器池连接到事件中心。 当此连接建立好以后,流入事件中心的数据会流式传输到此前在本文中创建的测试表。

  1. 在工具栏上选择“通知”,以验证事件中心部署是否成功。

  2. 在你创建的数据资源管理器池下,选择“数据库”>“TestDatabase”。

    Select test database.

  3. 选择“数据连接”,然后选择“添加数据连接”。

    Select data ingestion and Add data connection.

创建数据连接(预览版)

在窗体中填写以下信息,然后选择“创建”。

Data connection pane Event Hub - Azure Synapse Data Explorer.

设置 建议的值 字段说明
数据连接名称 test-hub-connection 要在 Azure Synapse 数据资源管理器中创建的连接的名称。
订阅 事件中心资源所在的订阅 ID。 此字段会自动填充。
事件中心命名空间 唯一的命名空间名称 先前选择的用于标识命名空间的名称。
事件中心 test-hub 创建的事件中心。
使用者组 test-group 在创建的事件中心定义的使用者组。
事件系统属性 选择相关属性 事件中心系统属性。 如果每个事件消息有多个记录,则系统属性将添加到第一个记录中。 添加系统属性时,创建更新表架构和映射以包括所选属性。
压缩 事件中心消息有效负载的压缩类型。 支持的压缩类型:None、Gzip。
托管标识 系统分配 由数据资源管理器群集用于从事件中心进行读取访问的托管标识。

注意
创建数据连接时:
- 系统分配的标识会自动创建(如果不存在)
- 为托管标识自动分配“Azure 事件中心数据接收方”角色,并将其添加到数据资源管理器群集。 建议验证是否已分配该角色,以及是否已将该标识添加到群集。

目标表

路由引入数据有两个选项:静态和动态。 本文将使用静态路由,需在其中将表名、数据格式和映射指定为默认值。 如果事件中心消息包含数据路由信息,则此路由信息将替代默认设置。

  1. 填写以下路由设置:

    Default routing settings for ingesting data to Event Hub - Azure Synapse Data Explorer.

    设置 建议的值 字段说明
    表名 TestTable 在“TestDatabase”中创建的表。
    数据格式 JSON 支持的格式为 Avro、CSV、JSON、MULTILINE JSON、ORC、PARQUET、PSV、SCSV、SOHSV、TSV、TXT、TSVE、APACHEAVRO 和 W3CLOG。
    映射 TestMapping 在“TestDatabase”中创建的映射,它将传入的数据映射到“TestTable”的列名称和数据类型 。 对于 JSON、多行 JSON 和 AVRO 是必需的,对于其他格式是可选的。

    注意

    • 无需指定所有默认路由设置。 部分设置也是接受的。
    • 只有创建数据连接后进入队列的事件才会被引入。
  2. 选择“创建” 。

事件系统属性映射

注意

  • json 和表格格式(例如 csvtsv)支持系统属性,而压缩数据不支持它们。 使用不受支持的格式时,仍会引入数据,但会忽略属性。
  • 对于表格数据,仅单记录事件消息支持系统属性。
  • 对于 JSON 数据,多记录事件消息也支持系统属性。 在这种情况下,系统属性仅添加到事件消息的第一条记录中。
  • 对于 csv 映射,属性将按系统属性表中列出的顺序添加到记录的开头。
  • 对于 json 映射,将根据系统属性表中的属性名称添加属性。

如果在表的“数据源”部分选择了“事件系统属性”,则必须在表架构和映射中包含系统属性

复制连接字符串

运行在先决条件中列出的示例应用时,需要事件中心命名空间的连接字符串。

  1. 在创建的事件中心命名空间下,选择“共享访问策略”,然后选择“RootManageSharedAccessKey”。

    Shared access policies.

  2. 复制“连接字符串 - 主键”。 请将其粘贴到下一节。

    Connection string.

生成示例数据

使用下载的示例应用生成数据。

  1. 在 Visual Studio 中打开示例应用解决方案。

  2. 在 program.cs 文件中,将 eventHubName 常量更新为事件中心的名称,并将 connectionString 常量更新为从事件中心命名空间复制的连接字符串。

    const string eventHubName = "test-hub";
    // Copy the connection string ("Connection string-primary key") from your Event Hub namespace.
    const string connectionString = @"<YourConnectionString>";
    
  3. 构建并运行应用。 应用将消息发送到事件中心,并且每 10 秒显示一次状态。

  4. 应用发送一些消息后,继续执行下一步:查看到事件中心和测试表的数据流。

查看数据流

应用生成数据以后,现在可以看到该数据从事件中心流到群集中的表。

  1. 在 Azure 门户中的事件中心下,可以看到应用运行时活动的峰值。

    Event Hub graph.

  2. 若要检查到目前为止已向数据库发送的消息数,请在测试数据库中运行以下查询。

    TestTable
    | count
    
  3. 若要查看消息的内容,请运行以下查询:

    TestTable
    

    结果集应如下图所示:

    Message result set.

    注意

    • Azure Synapse 数据资源管理器具有用于数据引入的聚合(批处理)策略,旨在优化引入过程。 默认批处理策略配置为在批满足以下条件之一时封装批:最大延迟时间为 5 分钟、总大小为 1G 或 1000 个 blob。 因此,你可能会遇到延迟。 有关详细信息,请参阅批处理策略
    • 事件中心引入包括 10 秒或 1 MB 的事件中心响应时间。
    • 若要降低响应时间延迟,请将表配置为支持流式处理。 请参阅流式处理策略

清理资源

如果你不打算再次使用事件中心,请清理 test-hub-rg,以免产生费用。

  1. 在 Azure 门户的最左侧选择“资源组”,,然后选择创建的资源组。

    如果左侧菜单处于折叠状态,请选择 Expand button. 将其展开。

    Select resource group to delete.

  2. 在“test-resource-group”下,选择“删除资源组”

  3. 在新窗口中,键入要删除的资源组的名称 (test-hub-rg),然后选择“删除”

后续步骤