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

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

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

有关从事件中心引入 Azure 数据资源管理器的一般信息,请参阅连接到事件中心

先决条件

登录到 Azure 门户

登录到 Azure 门户

创建事件中心

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

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

    “部署到 Azure”按钮的屏幕截图。

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

    Azure 门户 UI 的屏幕截图,其中显示了“创建事件中心”窗体。

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

    Azure 门户 UI 的屏幕截图,其中显示了聚焦于“创建资源组”下拉菜单的“创建事件中心”窗体。

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

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

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

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

    Azure 门户 UI 的屏幕截图,其中显示了创建事件中心命名空间、事件中心和使用者组窗体的摘要。

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

    Azure 门户 UI 工具栏的屏幕截图,其中显示了“通知”图标。

在 Azure 数据资源管理器中创建目标表

现在,在 Azure 数据资源管理器中创建一个表,事件中心会向该表发送数据。 在“先决条件”中预配的群集和数据库中创建表。

  1. 在 Azure 门户中浏览到你的群集,然后选择“查询”。

    Azure 门户 UI 左侧菜单的屏幕截图,其中显示了“查询应用程序”选项。

  2. 将以下命令复制到窗口中,然后选择“运行”以创建将接收引入数据的表 (TestTable)。

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

    Azure 数据资源管理器 Web UI 的屏幕截图,其中显示了运行以创建查询的窗口。

  3. 将以下命令复制到窗口中,然后选择“运行”将传入的 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"}}]'
    

连接到事件中心

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

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

  2. 在创建的群集下,选择“数据库”,然后选择“TestDatabase”

    Azure 数据资源管理器 Web UI 左侧菜单的屏幕截图,其中显示了“选择测试数据库”项。

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

    Azure 数据资源管理器 Web UI 左侧菜单的屏幕截图,其中显示了“选择数据引入”项。

创建数据连接

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

Azure 数据资源管理器 Web UI 的屏幕截图,其中显示了“创建数据连接”窗体。

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

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

注意

如果现有的数据连接未使用托管标识,我们建议将其更新为使用托管标识。

目标数据库(多数据库数据连接)

通过指定目标数据库,可重写与数据连接关联的默认值。 有关数据库路由的详细信息,请参阅事件路由

必须先允许将数据路由到多个数据库,然后才能设置备用目标数据库。 使用以下步骤允许将数据路由到备用数据库:

  1. 在 Azure 门户中,浏览到你的群集。

  2. 选择“数据库”>“数据连接”。

  3. 创建或编辑数据连接,然后在“数据连接”窗格中的“数据路由设置”下,打开“允许将数据路由到其他数据库(多数据库数据连接)”选项。

    Azure 数据资源管理器 Web UI 的屏幕截图,其中显示了“数据连接”页,并突出显示了“数据路由设置”选项。

目标表

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

  1. 填写以下路由设置:

    Azure 数据资源管理器 Web UI 的屏幕截图,其中显示了用于将数据引入事件中心的默认路由设置的“目标表”窗体。

    设置 建议的值 字段说明
    表名 TestTable 在“TestDatabase”中创建的表。
    数据格式 JSON 支持的格式为 Avro、CSV、JSON、MULTILINE JSON、ORC、PARQUET、PSV、SCSV、SOHSV、TSV、TXT、TSVE、APACHEAVRO 和 W3CLOG。
    映射 TestMapping 在“TestDatabase”中创建的映射,它将传入的数据映射到“TestTable”的列名称和数据类型 。 如果未指定,则将使用从表架构派生的标识数据映射

    注意

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

事件系统属性映射

注意

  • json 格式和表格格式(即 JSONMultiJSONCSVTSVPSVSCsvSOHsvTSVE)支持嵌入系统属性。
  • 使用不受支持的格式(即 TXT 或 ParquetAvro 等压缩格式)时,仍会引入数据,但会忽略属性。
  • 设置事件中心消息压缩时,不支持嵌入系统属性。 在这种情况下,将发出相应的错误,并且不会引入数据。
  • 对于表格数据,仅单记录事件消息支持系统属性。
  • 对于 json 数据,多记录事件消息也支持系统属性。 在这种情况下,系统属性仅添加到事件消息的第一条记录中。
  • 对于 CSV 映射,属性将按系统属性表中列出的顺序添加到记录的开头。
  • 对于 JSON 映射,将根据系统属性表中的属性名称添加属性。

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

复制连接字符串

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

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

    Azure 数据资源管理器 Web UI 左侧菜单的屏幕截图,其中显示了“共享访问策略”。

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

    Azure 数据资源管理器 Web UI 的屏幕截图,其中显示了“连接字符串”窗体。

生成示例数据

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

  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 门户中的事件中心下,可以看到应用运行时活动的峰值。

    事件中心图形的屏幕截图,其中显示了活动高峰。

  2. 要在 Azure 门户中预览发送到事件中心的传入数据,请参阅使用 Azure 流分析处理来自事件中心的数据

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

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

    TestTable
    

    结果集应如下图所示:

    事件中心查询的屏幕截图,其中显示了来自 TestTable 的结果。

    注意

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

清理资源

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

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

    如果左侧菜单处于折叠状态,请选择 “展开”按钮的屏幕截图。 将其展开。

    Azure 门户 UI 左侧菜单的屏幕截图,其中显示了“资源组”页。

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

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

后续步骤