65.9K
CodeProject 正在变化。 阅读更多。
Home

使用 Azure 事件中心、流分析和 Azure SQL 实现大规模流处理 第 2 部分:使用 Azure 流分析处理流数据

starIconstarIconstarIconstarIcon
emptyStarIcon
starIcon

4.67/5 (2投票s)

2022年2月23日

CPOL

7分钟阅读

viewsIcon

4630

如何通过将事件中心连接到 Azure 流分析来处理数据

本三部分系列中的上一篇文章设置了一个事件中心,然后使用一个小型本地 Python 应用程序从 CSV 文件流式传输数据。本教程将使用 Azure 流分析处理该事件中心数据,然后将数据写入 Azure SQL 数据库。

创建 Azure SQL Server 数据库

首先创建一个 Azure SQL Server 数据库来接收数据。首先,转到 Azure 门户并搜索“SQL 数据库”。然后,单击创建按钮。

要创建 Azure SQL 数据库,首先选择一个订阅和资源组。选择上一篇文章中的 data-streaming-example 资源组。

接下来,输入一个数据库名称,例如weather-db,因为这是本教程将处理的数据。

接下来,选择一个服务器。由于还没有服务器,单击新建。将打开一个新的创建窗格。使用在整个 Azure 中唯一的服务器名称,例如example-weather-server

最好选择与上一篇文章相同的位置,例如西欧。另外,创建管理员用户名和密码。通常,此信息应该安全,但对于此示例,您可以随意选择一些简单的信息,例如您的名字和Welcome123!@#

接受服务器设置后,屏幕将返回到数据库创建窗格,以配置计算和存储层。这些设置指示用户可以存储多少数据以及数据库可以使用多少个核心或数据事务单元 (DTU)。核心或 DTU 越多,数据库速度越快,但成本越高。无服务器数据库也是一个选项,在这种情况下,用户按使用量付费并获得动态缩放,但价格动态变化。最低层级——基本 DTU 层级——有 5 个 DTU,最多可以存储 2GB 数据。这个层级对于大多数测试来说绰绰有余,每月只需大约 5 美元,所以选择它。

回到数据库创建窗格,选择存储冗余。选择本地冗余,因为它最便宜。如果服务器宕机,数据仍然可以在同一数据中心内的另一台服务器上使用。但是,如果整个数据中心出现问题,数据将不可用。

接下来是网络、安全、初始数据源和排序规则等其他设置,最后是标签。跳过所有这些,转到审查 + 创建选项卡,然后点击创建按钮。审查结果应如下所示

或者,使用 Azure CLI,首先使用这些命令创建服务器,然后创建数据库

az sql server create –resource-group "data-streaming-example" –name "example-weather-server" 
   –admin-user sander –admin-password "Welcome123!@#" –location "West Europe"
az sql db create –resource-group "data-streaming-example" –server "example-weather-server" 
   –name "weather-db" –tier Basic –capacity 5 –max-size "2GB"

不要忘记在管理员密码中转义感叹号。

注意:创建可能需要大约 15 分钟。

探索 Azure 流分析

Azure 流分析是一种无服务器服务,用于分析云中的实时数据。它使用 SQL 语法,并且可以通过自定义 C# 和 JavaScript 进行扩展。

由于其原生集成,将数据从事件中心移动到流分析非常容易。事实上,在上一篇文章中的天气事件中心,菜单的“处理数据”选项中有一个“从事件启用实时洞察”按钮。从那里,可以尝试一些查询并立即创建流分析作业。但是,本教程将通过不同的方式创建流分析作业。

创建流分析作业

要创建流分析作业,请在 Azure 门户中搜索该术语,然后单击创建 +。此操作将打开创建窗格,该窗格明显很小。输入作业名称、订阅、资源组和位置。使用evhub-stream-analytics之类的名称,并与事件中心使用相同的位置,例如西欧。

有两个属性需要解释:托管环境和流单元。托管环境指定在云中运行流分析(通常选项)或在边缘设备上运行。边缘设备通常是本地物联网 (IoT) 设备,需要网关才能连接到 Azure。本教程使用云。

流单元的数量表示作业可以同时计算多少数据。更多的流单元意味着更多的内存和计算能力。由于流分析是无服务器的,用户按使用量付费,并且使用的流单元越多,计费就越高。对于本文的使用情况,默认的三个就足够了。

另一个选项是将私有数据(如连接字符串)保存在用户选择的存储帐户中。本教程不需要此选项,因此将其关闭。

创建窗格现在应如下图所示

或者,使用 Azure CLI,使用此命令

az stream-analytics job create –job-name “evhub-stream-analytics” 
   –resource-group “data-streaming-example” –location “West Europe” –compatibility-level “1.2”

该命令要求在 CLI 中安装streaming-analytics扩展。在 Azure 门户中运行此命令时会提示安装问题,只需确认即可。

要在自动化环境中运行此命令,请使用az extension add –name stream-analytics

添加事件中心输入

流分析作业最初处于停止模式。因此,首先向作业添加输入和输出,然后才能启动它。

只需从窗格菜单导航到输入即可添加输入,然后单击+ 添加流输入。此时,用户可以添加三个输入:Blob 存储/ADLS Gen2 (Azure Data Lake Storage Gen2)、事件中心或 IoT 中心。选择事件中心,将打开一个新窗格以选择事件中心。本教程只有一个事件中心,默认已设置。如果有更多,请选择正确的。

然后,提供一个输入别名,例如evhub-weather-input。值得查看输入格式,它有 CSV、Avro、其他 (XML) 和 JSON。默认是 JSON,上一篇文章的代码正在将 JSON 发送到事件中心,所以应该没问题。请注意,原始 CSV 也是可用的,并且在流分析中仍然具有开箱即用的支持。

添加 SQL 数据库输出

接下来,添加 SQL 数据库作为输出。只需转到输出,单击添加按钮,然后选择SQL 数据库。将输出命名为sql-weather-output。然后,从下拉列表中选择资源组和数据库,并输入表名称,例如WeatherData

授予流分析作业访问 SQL Server 的权限需要额外的工作。要正确执行此操作,请参阅Microsoft 的文档。本教程采用了一点捷径。

首先,在分析作业中找到托管标识并确保其已打开。然后,转到 SQL Server 和菜单中的Azure Active Directory选项。单击设置管理员,找到分析作业的名称,选择它,然后保存。然后,转到防火墙和虚拟网络,选择允许 Azure 服务和资源访问此服务器。这可以避免将分析作业的 IP 地址列入安全列表。最后,单击+ 添加客户端 IP,然后保存。

还将WeatherData表添加到 Azure SQL 实例。如果服务器防火墙包含客户端 IP,则可以使用 Azure 门户或 SQL Server Management Studio 进行连接。使用 Azure SQL 创建窗格中的凭据登录。

该表应如下图所示

CREATE TABLE [dbo].[WeatherData](
   [id] [int] IDENTITY(1,1) NOT NULL,
   [date] nvarchar(256) NULL,
   [city] nvarchar(256) NULL,
   [description] nvarchar(256) NULL,
   [EventProcessedUtcTime] datetime2 NULL,
   [PartitionId] [int] NULL,
   [EventEnqueuedUtcTime] datetime2 NULL
)

通过单击输入和输出上的测试按钮来测试配置是否正确。如果最初失败,请等待几分钟然后重试。

查询流分析

流分析使用类似 SQL 的查询从源查询数据。在菜单的查询选项中设置此项。本教程使用一个简单查询(如下)。流分析会添加EventProcessedUtcTimePartitionIdEventEnqueuedUtcTime

SELECT [date]
   ,city
   ,[description]
   ,EventProcessedUtcTime
   ,PartitionId
   ,EventEnqueuedUtcTime
INTO [sql-weather-output]
FROM [evhub-weather-input]

可选地,用户可以使用聚合。流分析有一组特定的窗口函数,用于指定分组周期。

查看分析操作

现在,返回到概览窗格并启动流分析作业。可以选择立即启动或安排启动时间。

启动和停止作业可能需要一到两分钟。一旦它运行起来,启动第一篇文章中的 Python 应用程序,数据应该会出现在 Azure SQL 表中。

后续步骤

本文演示了如何设置 Azure 流分析作业并将其连接到事件中心和 Azure SQL 数据库。阅读本三部分系列的最后一篇文章,以更有意义地转换数据并使用 PowerBI 进行可视化。

要了解如何连接到您的数据源、可视化并发现重要内容,以及与您的团队分享,请查看我们的Reactor YouTube 使用 Power BI 进行数据分析简介

© . All rights reserved.