使用 Power BI 直观显示 Apache Storm 拓扑中的数据

Power BI 允许以可视方式将数据显示为报表。 本文档提供了如何使用 Apache Storm on HDInsight 为 Power BI 生成数据的示例。

Note

若要将 Visual Studio 连接到 Azure 中国区,可按使用 Visual Studio 2015 连接中国区 Azure中的说明操作。

如果使用的是 Visual Studio 2015 Update 2 或更高版本,可以按照以下图片中的说明,选中“启用隔离的 Azure Active Directory 配置”选项。

enable-isolated-azure-active-directory-configuration

如果使用的是 Visual Studio 2017,可按 使用 Visual Studio 2017 连接中国区 Azure中的说明操作。

Note

本文档中的步骤依赖于包含 Visual Studio 的 Windows 开发环境。 可将编译的项目提交到基于 Linux 的 HDInsight 群集。 仅在 2016 年 10 月 28 日以后创建的基于 Linux 的群集支持 SCP.NET 拓扑。

若要将 C# 拓扑与基于 Linux 的群集配合使用,请将项目使用的 Microsoft.SCP.Net.SDK NuGet 包更新到版本 0.10.0.6 或更高版本。 包的版本还必须与 HDInsight 上安装的 Storm 的主要版本相符。 例如,Storm on HDInsight 版本 3.3 和 3.4 使用 Storm 版本 0.10.x,而 HDInsight 3.5 使用 Storm 1.0.x。

基于 Linux 的群集上的 C# 拓扑必须使用 .NET 4.5,并使用 Mono 在 HDInsight 群集上运行。 大多数功能适用。 但应查看 Mono 兼容性 文档,了解可能的不兼容性。

对于此项目的 Java 版本(此版本适用于基于 Linux 或基于 Windows 的 HDInsight),请参阅使用 Storm on HDInsight (Java) 处理 Azure 事件中心的事件

先决条件

工作原理

本示例包含一个可随机生成 Internet Information Services (IIS) 日志数据的 C# Storm 拓扑。 将此数据写入 SQL 数据库,随后用于在 Power BI 中生成报表。

以下文件实现了此示例的主要功能:

  • SqlAzureBolt.cs:将 Storm 拓扑中生成的信息写入 SQL 数据库。
  • IISLogsTable.sql:Transact-SQL 语句,用于生成存储数据的数据库。
Warning

在 HDInsight 群集上启动拓扑前,请先在 SQL 数据库中创建表。

下载示例

下载 HDInsight C# Storm Power BI 示例。 若要下载该示例,请使用 git 复制/克隆它,或使用“下载”链接下载 .zip 存档。

创建数据库

  1. 若要创建数据库,请使用 SQL 数据库教程文档中的步骤。

  2. 按照使用 Visual Studio 连接到 SQL 数据库文档中的步骤连接到该数据库。

  3. 在对象资源管理器中,右键单击数据库,然后选择“新建查询”。 将下载的项目中包含的 IISLogsTable.sql 文件的内容粘贴到查询窗口中,然后使用 Ctrl+Shift+E 执行查询。 你应会收到已成功完成命令的消息。

配置示例

  1. Azure 门户中,选择 SQL 数据库。 从 SQL 数据库边栏选项卡的“概要”部分,选择“显示数据库连接字符串”。 从显示的列表中,复制 ADO.NET(SQL 身份验证) 信息。

  2. 在 Visual Studio 中打开该示例。 在“解决方案资源管理器”中打开“App.config”文件,然后找到以下条目:

     <add key="SqlAzureConnectionString" value="##TOBEFILLED##" />
    

    ##TOBEFILLED## 值替换为上一步骤中复制的数据库连接字符串。 将 {your_username}{your_password} 替换为数据库的用户名和密码。

  3. 保存并关闭文件。

部署示例

  1. 在“解决方案资源管理器”中,右键单击“StormToSQL”项目,然后选择“提交到 Storm on HDInsight”。 从“Storm 群集”下拉对话框中选择 HDInsight 群集。

    Note

    可能需要在几秒钟后,“Storm 群集”下拉对话框中才会填充服务器名称。

    如果出现提示,请输入 Azure 订阅的登录凭据。 如果有多个订阅,请登录包含 Storm on HDInsight 群集的订阅。

  2. 提交拓扑之后,将会显示“拓扑查看器”。 若要查看此拓扑,请从列表中选择 SqlAzureWriterTopology 条目。

    拓扑,已选择的拓扑

    可以使用此视图查看有关拓扑的信息,或双击条目(例如 SqlAzureBolt)以查看特定于拓扑中组件的信息。

  3. 在拓扑运行几分钟后,请返回用于创建数据库的 SQL 查询窗口。 将现有语句替换为以下查询:

     select * from iislogs;
    

    按 Ctrl+Shift+E 执行查询,应显示类似如下数据的结果:

     1    2016-05-27 17:57:14.797    255.255.255.255    /bar    GET    200
     2    2016-05-27 17:57:14.843    127.0.0.1    /spam/eggs    POST    500
     3    2016-05-27 17:57:14.850    123.123.123.123    /eggs    DELETE    200
     4    2016-05-27 17:57:14.853    127.0.0.1    /foo    POST    404
     5    2016-05-27 17:57:14.853    10.9.8.7    /bar    GET    200
     6    2016-05-27 17:57:14.857    192.168.1.1    /spam    DELETE    200
    

    已从 Storm 拓扑写入此数据。

创建报告

  1. 连接到 Power BI 的 Azure SQL 数据库连接器

  2. 在“数据库”中,选择“获取”。

  3. 选择“Azure SQL 数据库”,然后选择“连接”。

    Note

    系统可能要求下载 Power BI Desktop 以继续。 如果是这样,请使用以下步骤进行连接:

    1. 打开 Power BI Desktop 并选择“获取数据”。
    2. 选择“Azure”,然后选择“Azure SQL 数据库”。
  4. 输入信息以连接到 Azure SQL 数据库。 可以通过访问 Azure 门户并选择 SQL 数据库来找到此信息。

    Note

    还可以通过在连接对话框中使用“启用高级选项”,来设置刷新间隔和自定义筛选器。

  5. 连接后,将显示一个名称与连接的数据库相同的新数据集。 选择该数据集以开始设计报表。

  6. 在“字段”中展开“IISLOGS”条目。 若要创建一个列出 URI 词干的报表,请选中“URISTEM”对应的复选框。

    创建报表

  7. 接下来,将“方法”拖到报表中。 报表将会更新,以列出词干和用于 HTTP 请求的对应 HTTP 方法。

    添加方法数据

  8. 从“可视化”列中选择“字段”图标,然后选择“值”部分中“方法”旁边的向下箭头。 若要显示某个 URI 的访问次数,请选择“计数”。

    更改为方法计数

  9. 接下来,选择“堆积柱形图”以更改信息的显示方式。

    更改为堆积图

  10. 若要保存报表,请选择“保存” 并输入报表的名称。

停止拓扑

拓扑将继续运行,直至将其停止或删除 Storm on HDInsight 群集。 若要停止拓扑,请执行以下步骤:

  1. 在 Visual Studio 中,返回拓扑查看器并选择拓扑。

  2. 选择“终止”按钮即可停止拓扑。

    拓扑摘要中的终止按钮

删除群集

Warning

HDInsight 群集是基于分钟按比例收费,而不管用户是否正在使用它们。 请务必在使用完之后删除群集。 有关详细信息,请参阅如何删除 HDInsight 群集

后续步骤

在本文档中,已学习如何将数据从 Storm 拓扑发送到 SQL 数据库,然后使用 Power BI 可视化数据。 有关如何在 Storm on HDInsight 中使用其他 Azure 技术的信息,请参阅以下文档: