使用 Azure HDInsight 上的数据可视化工具的 Apache Spark BI

了解如何使用数据可视化工具(例如 Power BI 和 Tableau)来使用 HDInsight 群集上的 Apache Spark BI 分析原始的示例数据集。

Note

本文所述的通过 BI 工具进行的连接在 Azure HDInsight 3.6 预览版的 Spark 2.1 上不受支持。 仅支持 Spark 1.6 和 2.0 版(分别为 HDInsight 3.4 和 3.5)。

本教程还作为 HDInsight Spark 群集上的 Jupyter Notebook 提供。 笔记本体验将通过笔记本本身运行 Python 代码段。 如要从 Notebook 内部执行本教程,请创建 Spark 群集,启动 Jupyter Notebook (https://CLUSTERNAME.azurehdinsight.cn/jupyter),然后运行 Python 文件夹中的 Notebook“将 BI 工具与 HDInsight.ipynb 上的 Apache Spark 配合使用”。

先决条件

为 Spark 数据可视化准备数据

在本节中,我们使用 HDInsight Spark 群集中的 Jupyter Notebook,运行处理原始数据示例并将其另存为表的作业。 示例数据是所有群集在默认情况下均会提供的 .csv 文件 (hvac.csv)。

将数据另存为表后,在下一部分,我们将使用 BI 工具连接到该表,然后执行数据可视化。

  1. Azure 门户上的启动板中,单击 Spark 群集的磁贴(如果已将它固定到启动板)。 也可以单击“全部浏览” > “HDInsight 群集”导航到群集。

  2. 在 Spark 群集边栏选项卡中单击“群集仪表板”,然后单击“Jupyter Notebook”。 出现提示时,请输入群集的管理员凭据。

    Note

    也可以在浏览器中打开以下 URL 访问群集的 Jupyter 笔记本。 将 CLUSTERNAME 替换为群集的名称:

    https://CLUSTERNAME.azurehdinsight.cn/jupyter

  3. 创建 Notebook。 单击“新建”,然后单击“PySpark”。

    为 Apache Spark BI 创建 Jupyter Notebook

  4. 随即创建新笔记本,并以 Untitled.pynb 名称打开。 单击顶部的笔记本名称,然后输入一个友好名称。

    为 Apache Spark BI 的 Notebook 提供名称

  5. 使用笔记本是使用 PySpark 内核创建的,因此不需要显式创建任何上下文。 运行第一个代码单元格时,系统将自动为你创建 Spark 和 Hive 上下文。 首先可以导入此方案所需的类型。 为此,请将光标放在单元格中,然后按 SHIFT + ENTER

     from pyspark.sql import *
    
  6. 将示例数据载入临时表。 在 HDInsight 中创建 Spark 群集时,系统会将示例数据文件 hvac.csv 复制到 \HdiSamples\HdiSamples\SensorSampleData\hvac 下的关联存储帐户。

    将以下代码段粘贴到空白单元格中,然后按 SHIFT + ENTER。 此代码段会将数据注册到名为 hvac的表。

     # Create an RDD from sample data
     hvacText = sc.textFile("wasbs:///HdiSamples/HdiSamples/SensorSampleData/hvac/HVAC.csv")
    
     # Create a schema for our data
     Entry = Row('Date', 'Time', 'TargetTemp', 'ActualTemp', 'BuildingID')
    
     # Parse the data and create a schema
     hvacParts = hvacText.map(lambda s: s.split(',')).filter(lambda s: s[0] != 'Date')
     hvac = hvacParts.map(lambda p: Entry(str(p[0]), str(p[1]), int(p[2]), int(p[3]), int(p[6])))
    
     # Infer the schema and create a table       
     hvacTable = sqlContext.createDataFrame(hvac)
     hvacTable.registerTempTable('hvactemptable')
     dfw = DataFrameWriter(hvacTable)
     dfw.saveAsTable('hvac')
    
  7. 验证创建表是否成功。 可以使用 %%sql 幻数直接运行 Hive 查询。 有关 %%sql magic 以及可在 PySpark 内核中使用的其他 magic 的详细信息,请参阅包含 Spark HDInsight 群集的 Jupyter Notebook 上可用的内核

     %%sql
     SHOW TABLES
    

    输出将如下所示:

     +---------------+-------------+
     |tableName      |isTemporary  |
     +---------------+-------------+
     |hvactemptable  |true        |
     |hivesampletable|false        |
     |hvac           |false        |
     +---------------+-------------+
    

    只有 isTemporary 列中包含 false 的表才是要存储在元存储,并且可通过 BI 工具访问的 Hive 表。 在本教程中,请连接到创建的 hvac 表。

  8. 验证表是否包含所需的数据。 将以下代码段粘贴到笔记本的空白单元格中,然后按 SHIFT + ENTER

     %%sql
     SELECT * FROM hvac LIMIT 10
    
  9. 关闭 Notebook 以释放资源。 为此,请在 Notebook 的“文件”菜单中,单击“关闭并停止”。

使用 Power BI 进行 Spark 数据可视化

Note

本部分仅适用于 HDInsight 3.4 上的 Spark 1.6 和 HDInsight 3.5 上的 Spark 2.0。

将数据另存为表后,可以使用 Power BI 连接数据并以可视化方式呈现,以便创建报告和仪表板等。

  1. 请确保有权访问 Power BI。 可以从 http://www.powerbi.com/获取免费的 Power BI 预览版订阅。

  2. 登录 Power BI

  3. 在左窗格的底部,单击“获取数据” 。

  4. 在“获取数据”页上的“导入或连接到数据”下面,单击“数据库”旁边的“获取”。

    为 Apache Spark BI 将数据获取到 Power BI 中

  5. 在下一个屏幕中,单击“Azure HDInsight 上的 Spark”,然后单击“连接”。 出现提示时,请输入群集 URL (mysparkcluster.azurehdinsight.cn),以及用于连接到群集的凭据。

    连接到 Apache Spark BI

    建立连接后,Power BI 开始从 HDInsight 上的 Spark 群集导入数据。

  6. Power BI 将导入数据,并在“数据集”标题下面添加一个 Spark 数据集。 单击该数据集打开新工作表,以可视化数据。 还可以将工作表另存为报表。 如要保存工作表,请单击“文件”菜单中的“保存”。

    Power BI 仪表板上的 Apache Spark BI 磁贴

  7. 请注意,右侧的“字段”列表列出了前面创建的 hvac 表。 展开该表,以查看前面在笔记本的表中定义的字段。

    在 Apache Spark BI 仪表板上列出表

  8. 生成视觉效果,以显示每栋建筑物目标温度与实际温度之间的差异。 若要可视化数据,请选择“分区图”(在红框中显示)。 若要定义轴,请将“BuildingID”字段拖放到“轴”下面,并将“ActualTemp”/“TargetTemp”字段拖放到“值”下面。

    使用 Apache Spark BI 创建 Spark 数据可视化效果

  9. 默认情况下,可视化效果效果会显示 ActualTempTargetTemp 的总和。 对于这两个字段,从下拉列表中选择“平均”以求出两栋建筑物的实际和目标温度的平均值 。

    使用 Apache Spark BI 创建 Spark 数据可视化效果

  10. 数据视觉效果应类似于屏幕截图中的效果。 在视觉效果上移动光标可获取相关数据的工具提示。

    使用 Apache Spark BI 创建 Spark 数据可视化效果

  11. 在顶部菜单中,单击“保存”并提供报表名称 。 还可以固定视觉效果。 固定视觉效果时,系统会将其存储在仪表板上,以便直观跟踪最新值。

    可以针对同一个数据集添加任意数量的视觉效果,并将其固定在仪表板上,以获取数据快照。 此外,HDInsight 上的 Spark 群集直接连接到 Power BI。 这可确保 Power BI 随时能够获取群集的最新数据,因此不需要计划数据集的刷新。

使用 Tableau Desktop 进行 Spark 数据可视化

Note

本部分仅适用于在 Azure HDInsight 中创建的 Spark 1.5.2 群集。

  1. 在运行本 Apache Spark BI 教程的计算机上安装 Tableau Desktop

  2. 请确保装该计算机也装有 Microsoft Spark ODBC 驱动程序。 可从 此处安装该驱动程序。

  3. 启动 Tableau Desktop。 在左窗格中,从要连接到的服务器列表中单击“Spark SQL”。 如果左窗格中未按默认列出 Spark SQL,可以单击“更多服务器”来找到它。

  4. 在 Spark SQL 连接对话框中,按照屏幕截图所示提供值,然后单击“确定” 。

    连接到 Apache Spark BI 的群集

    仅当已在计算机上安装了 Microsoft Spark ODBC 驱动程序时,身份验证下拉列表才将“Microsoft Azure HDInsight 服务”列作一个选项。

  5. 在下一个屏幕上,从“架构”下拉列表中单击“查找”图标,然后单击“默认”。

    为 Apache Spark BI 查找架构

  6. 对于“表”字段,请再次单击“查找”图标以列出群集中的所有 Hive 表。 应会看到以前使用 Notebook 创建的 hvac 表。

    为 Apache Spark BI 查找表

  7. 将表拖放到右侧的顶部框中。 Tableau 导入数据,并以红色框突出显示架构。

    为 Apache Spark BI 将表添加到 Tableau

  8. 单击左下角的“工作表 1”选项卡 。 针对每个日期生成一种视觉效果,用于显示所有建筑物的目标温度和实际温度平均值。 将“日期”和“建筑物 ID”拖到“列”,将“实际温度”/“目标温度”拖到“行”。 在“标记”下面选择“区域”,以使用区域映射进行 Spark 数据可视化。

    添加用于 Spark 数据可视化的字段

  9. 默认情况下,温度字段显示为聚合值。 如果要显示平均温度,可从下拉列表中执行该操作,如下所示。

    将温度用于 Spark 数据可视化

  10. 也可以将一个温度映射叠加在另一个温度映射上,以便更好感受目标温度和实际温度之间的差异。 将鼠标移到下方区域映射的角落,直到出现以红色圆圈突出显示的控点形状为止。 将映射拖到顶部的其他映射,当出现以红色矩形突出显示的形状时释放鼠标。

    合并用于 Spark 数据可视化的映射

    数据视觉效果会变化,如以下屏幕截图所示:

    Spark 数据可视化的 Tableau 输出

  11. 单击“保存”以保存工作表 。 可以创建仪表板,并在其中添加一个或多个工作表。

另请参阅

方案

创建和运行应用程序

工具和扩展

管理资源