将数据从 IoT 中心引入到 Azure 数据资源管理器

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

本文介绍如何将数据从 IoT 中心(大数据流处理平台和 IoT 引入服务)引入 Azure 数据资源管理器。

有关从 IoT 中心将数据引入到 Azure 数据资源管理器的常规信息,请参阅连接到 IoT 中心

先决条件

创建 IoT 中心

此部分介绍如何使用 Azure 门户创建 IoT 中心。

  1. 登录 Azure 门户

  2. 从 Azure 主页中选择“+ 创建资源”按钮,然后在“搜索市场”字段中输入“IoT 中心”。

  3. 在搜索结果中选择“IoT 中心”,然后选择“创建” 。

  4. 在“基本信息”选项卡上,按如下所示填写字段:

    • 订阅:选择要用于中心的订阅。

    • 资源组:选择一个资源组或新建一个资源组。 若要新建资源组,请选择“新建”并填写要使用的名称。 若要使用现有的资源组,请选择它。 有关详细信息,请参阅管理 Azure 资源管理器资源组

    • 区域:选择中心所在的区域。 选择最靠近你的位置。 某些功能(如 IoT 中心设备流)仅适用于特定区域。 对于这些受限功能,你必须选择受支持的区域之一。

    • IoT 中心名称:输入中心的名称。 此名称必须全局唯一。 如果输入的名称可用,会显示一个绿色复选标记。

    重要

    由于 IoT 中心将作为 DNS 终结点公开可发现,因此请务必避免在命名它时输入任何敏感信息或个人身份信息。

    Create a hub in the Azure portal.

  5. 在完成时选择“下一步:大小和规模”,以继续创建中心。

    Set the size and scale for a new hub using the Azure portal.

    可在此处接受默认设置。 如果需要,可以修改以下任何字段:

    • 定价和缩放层:选择的层。 可以根据你需要的功能数以及每天通过解决方案发送的消息数从多个层级中进行选择。 免费层适用于测试和评估。 允许 500 台设备连接到中心,每天最多可传输 8,000 条消息。 每个 Azure 订阅可以在免费层中创建一个 IoT 中心。

      如果正在完成 IoT 中心设备流的快速入门,请选择免费层。

    • IoT 中心单元:每日每单位允许的消息数取决于中心的定价层。 例如,如果希望中心支持 700,000 条消息引入,请选择两个 S1 层单位。 有关其他层选项的详细信息,请参阅选择合适的 IoT 中心层

    • Microsoft Defender for IoT:启用此功能可为 IoT 和设备添加额外的一层威胁防护。 此选项不可用于免费层的中心。

    • 高级设置>设备到云的分区:此属性将设备到云消息与这些消息的同步读取器数目相关联。 大多数中心只需要 4 个分区。

  6. 在完成时选择“下一步:标记”继续到下一屏幕。

    标记是名称/值对。 可以为多个资源和资源组分配相同的标记,以便对资源进行分类并合并计费。 有关详细信息,请参阅使用标记来组织 Azure 资源

    Assign tags for the hub using the Azure portal.

  7. 在完成时选择“下一步:查看+创建”可查看选择。 你会看到类似于此屏幕的内容,但其中包含创建中心时选择的值。

    Review information for creating the new hub.

  8. 选择“创建”以创建新的中心。 创建中心需要几分钟时间。

将设备注册到 IoT 中心

在本部分中,将使用 Azure CLI 为本文创建设备标识。 设备 ID 区分大小写。

  1. 在 Azure CLI 中,运行以下命令以安装适用于 Azure CLI 的 Azure IoT 扩展:

    az extension add --name azure-iot
    
  2. 使用以下命令创建一个名为 myDeviceId 的新设备标识并检索设备连接字符串:

    az iot hub device-identity create --device-id myDeviceId --hub-name {Your IoT Hub name}
    az iot hub device-identity connection-string show --device-id myDeviceId --hub-name {Your IoT Hub name} -o table
    

    重要

    收集的日志中可能会显示设备 ID 用于客户支持和故障排除,因此,在为日志命名时,请务必避免包含任何敏感信息。

记下结果中的设备连接字符串。 设备应用使用此设备连接字符串以设备身份连接到 IoT 中心。

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

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

  1. 在 Azure 门户中导航到群集,然后选择“查询”。

    ADX query in portal.

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

    .create table TestTable (temperature: real, humidity: real)
    

    Run create query.

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

    .create table TestTable ingestion json mapping 'TestMapping' '[{"column":"humidity","path":"$.humidity","datatype":"real"},{"column":"temperature","path":"$.temperature","datatype":"real"}]'
    

将 Azure 数据资源管理器表连接到 IoT 中心

现在,请通过 Azure 数据资源管理器连接到 IoT 中心。 当此连接完成以后,流入 IoT 中心的数据会流式传输到创建的目标表

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

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

    Select test database.

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

    Create data connection to IoT Hub- Azure Data Explorer.

创建数据连接

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

    Data connection pane in IoT Hub - Azure Data Explorer.

    设置 字段说明
    数据连接名称 要在 Azure 数据资源管理器中创建的连接的名称
    订阅 事件中心资源所在的订阅 ID。
    IoT 中心 IoT 中心名称
    共享访问策略 共享访问策略的名称。 必须有读取权限
    使用者组 在 IoT 中心的内置终结点中定义的使用者组
    事件系统属性 IoT 中心事件系统属性。 添加系统属性时,创建更新表架构和映射以包括所选属性。

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

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

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

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

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

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

    Allow multi-database routing - IoT Hub - Azure Data Explorer.

目标表

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

  1. 填写以下路由设置:

    Default routing properties - IoT Hub - Azure Data Explorer.

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

    警告

    如果进行手动故障转移,必须重新创建数据连接。

    注意

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

事件系统属性映射

注意

  • 单记录事件支持系统属性。
  • 对于 csv 映射,属性将添加到记录的开头。 对于 json 映射,将根据下拉列表中显示的名称添加属性。

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

生成用于测试的示例数据

模拟设备应用程序会连接到 IoT 中心上特定于设备的终结点,并发送模拟的温度和湿度遥测数据。

  1. https://github.com/Azure-Samples/azure-iot-samples-csharp/archive/refs/heads/main.zip 下载示例 C# 项目并提取 ZIP 存档。

  2. 在本地终端窗口中,导航到示例 C# 项目的根文件夹。 然后导航到 iot-hub\Quickstarts\SimulatedDevice 文件夹。

  3. 在所选文本编辑器中打开 Program.cs 文件。

    s_connectionString 变量的值替换为s_connectionString中的设备连接字符串。 然后将更改保存到 Program.cs 文件。

  4. 在本地终端窗口中,运行以下命令以安装模拟设备应用程序所需的包:

    dotnet restore
    
  5. 在本地终端窗口中,运行以下命令,生成并运行模拟设备应用程序:

    dotnet run
    

    以下屏幕截图显示了模拟设备应用程序将遥测数据发送到 IoT 中心后的输出:

    Run the simulated device.

查看数据流

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

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

    IoT Hub metrics.

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

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

    TestTable
    

    结果集:

    Show ingested data results.

    注意

    • Azure 数据资源管理器具有用于数据引入的聚合(批处理)策略,旨在优化引入过程。 默认情况下,该策略配置为 5 分钟、1000 项或 1 GB 数据,因此你可能会遇到延迟。 有关聚合选项,请参阅批处理策略
    • 配置表以支持流式处理并消除响应时间延迟。 请参阅流式处理策略

清理资源

如果不打算再次使用 IoT 中心,请清理资源组以避免产生费用。

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

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

    Select resource group to delete.

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

  3. 在新窗口中键入要删除的资源组的名称,然后选择“删除”。

后续步骤