在本次实验中,您将创建一个简单的交互式实时仪表板,以可视化存储在 Kudu 中的传感器数据。
您将使用的数据是在之前的实验中收集和处理的传感器数据(参见下面的准备工作)。
准备
本次实验以Edge和Nifi实验中开发的内容为基础。
实验总结
- 实验 1 – 部署并导航到 Cloudera Data Visualization
- 实验 2 - 创建新的数据连接
- 实验 3 - 探索数据
- 实验 4 - 创建仪表板
- 实验 5 - 添加图表
实验 1 – 部署并导航到 Cloudera Data Visualization
本实验向您展示如何部署和导航到 Cloudera 数据可视化 (DataViz) 页面。
如果您参加了指导实验,您可能已经获得了 DataViz 页面的链接。如果是这种情况,请随时跳到下一个实验。
部署Cloudera Data Visualization
本实验介绍如何部署Cloudera Data Visualization,如果已经部署完成,则跳过。
将Cloudera Data Visualization引擎添加到CDSW
- 转到 Cloudera Data Science Workbench Web 应用程序并以站点管理员身份登录。
- 在左侧边栏上,单击Site Administration。
您将看到一系列选项卡,其中包含您可以作为站点管理员执行的所有任务。
- 单击Runtime/Engine选项卡。
- 提供出现在引擎列表中的数据可视化引擎的名称以及指向 Cloudera Docker 存储库中 docker 映像的完整链接。
使用以下引擎:
代码语言:javascript复制docker.repository.cloudera.com/cloudera/cdv/cdswdataviz:6.3.7-b38
- 单击添加。
添加Data Visualization到CDSW项目中
- 在左侧边栏上,单击Projects。
- 单击要在其中添加客户引擎的项目。因为不需要已有的脚本,可以选择空白项目。
- 从左侧边栏中 打开项目设置,然后单击引擎选项卡。Project Settings→Runtime/Engine,选择Legacy Engine
- 从下拉菜单中选择数据可视化图像。
- 单击保存引擎设置。
在CDSW中创建Data Visualization Application
- 转到项目的概述页面。
- 在左侧边栏上,单击应用程序。
- 单击新建应用程序。
- 为您的新应用程序提供以下详细信息:
- 名称 - 输入应用程序的名称。
- 子域 - 输入将用于构建 Web 应用程序 URL 的子域。确保它包含 URL 友好字符。
- 描述 - 输入应用程序的描述。
- 脚本 - 选择启动脚本的路径:/opt/vizapps/tools/arcviz/startup_app.py
- 引擎内核 - 选择此应用程序所需的内核,选择Python 3。
- 单击创建应用程序。
几分钟后,您应该会在应用程序页面上看到应用程序状态更改为正在运行 。正在运行的应用程序现在拥有一个托管的、功能齐全的数据可视化平台。
您可以从应用程序页面上的操作 下拉菜单中停止、重新启动或 删除CDSW 应用程序。
如果要对现有应用程序进行更改,请单击 应用程序名称下的概览。然后转到“ 设置”选项卡进行任何更改并更新应用程序。
打开 CDP Data Visualization并登录
可以通过 Cloudera Data Science Workbench (CDSW) 访问 CDP 数据可视化。如果您不知道如何到达,请按照以下导航步骤操作:
- 在 Cloudera Manager 中,单击集群 > Cloudera Data Science Workbench。
- 在 CDSW 页面上,单击CDSW Web UI链接。
- 登录到 CDSW。
- 在 CDSW 页面上,单击Application,然后单击先前为实验设置的“Viz Server Application”。
- 点击link登录到 Cloudera Viz Server Application。登录后,您应该会看到应用程序主页:
- 切换用户到vizapps_admin(系统管理员用户)
目前登录进去的是用户admin是普通用户,没有添加数据源的权限,我们先切换到系统管理员用户vizapps_admin,然后给admin用户赋权限,这样就可以是有admin用户做后续的操作了。
先Logout当前用户admin
使用vizapps_admin/vizapps_admin用户登陆Data Visualization应用
进入系统后进入设置页面,选择Site Settings
进入Users & Group菜单,可以看到之前的用户admin是普通用户
点击编辑按钮,将Permissions改成Admin User,然后保存
然后退出,再使用用户admin登陆(通过CDSW Application)
实验 2 - 创建新连接
Kudu 是纯粹的存储引擎,不提供查询的 SQL 接口。对 Kudu 的 SQL 访问是通过 Impala 引擎完成的,您将在本次实验中使用该引擎。您将设置与 Impala 引擎的新连接以用于仪表板查询。
- 选择Data选项卡并单击NEW CONNECTION。
- 在表单顶部,设置以下属性:
Connection type: Impala
Connection name: Local Impala
注意:Connection type不是CDW Impala。
- 在Basic选项卡中设置以下内容:
Hostname: <CLUSTER_HOSTNAME> (something like: cdp.x.x.x.x.nip.io)
Port #: 21050
Username: [leave blank]
Password: [leave blank]
- 在“Advanced”选项卡中设置以下内容:
Connection mode: Binary
Socket type: Normal
Authentication mode: NoSasl
- 单击TEST以测试连接。
您应该看到“Connection Verified”,如下所示。
- 点击连接。
实验 3 - 探索数据
Cloudera Data Visualization 提供了一个 Data Explorer 工具,使您能够探索、转换和创建数据视图以满足您的需求。在本实验中,您将查看 Kudu 中可用的数据并为仪表板准备这些数据。
- 选择新创建的Local Impala连接,您可以在左侧窗格中看到它。
- 选择Connection Explorer选项卡,然后选择Default数据库,最后选择Sensor表。将加载带有示例数据的预览。
您可以在数据示例中看到该sensor_ts列包含以微秒为单位的时间戳。对于您的仪表板,您需要将这些值转换为秒。在接下来的步骤中,您将创建一个新数据集并进行必要的数据调整。
- 单击Sensor表旁边的New dataset选项。将数据集命名为“Sensor Data”
将创建一个新数据集并在“数据集”选项卡下显示:
- 单击数据集将其打开并选择“Fields”选项卡。您会注意到 DataViz 没有自动检测数据集的任何维度。
由于该sensor_ts列是数字类型,而不是日期/时间,它由#字段名称旁边的图标指示,因此它被归类为Measures而不是Dimensions。您将在接下来的步骤中修复。
- 您需要将数字字段从微秒转换为秒,并将其转换为TIMESTAMP数据类型。为此,请单击EDIT FIELDS按钮。
- 在Measures列表中,找到sensor_ts字段,打开其下拉菜单并单击Clone。Copy of sensor_ts将出现一个新的Measures。
- 打开此新度量的下拉菜单,然后选择Edit field。
- 在Edit Field Parameters窗口中,更改以下内容:
- 在Basic Settings选项卡中:
Display Name: sensor_timestamp
Category: Dimension
- 在Expression选项卡中,输入以下表达式:
microseconds_add(to_timestamp(cast([sensor_ts]/1000000 as bigint)), [sensor_ts] % 1000000)
- 通过单击VALIDATE EXPRESSION来验证表达式。
- 单击应用以保存更改
- 您会注意到类别 ( Dim)、数据类型(日历图标)和字段名称已更新。不过,该字段仍显示在“Measures”类别中。
这只是刷新问题。单击顶部的REFRESH按钮,您应该会看到sensor_timestamp “跳转”到Dimensions类别的字段。
- 该sensor_id字段也是一个维度,需要移动到正确的类别。
- 为此,请在“Measures”类别下找到该字段sensor_id,然后单击图标将其切换为。再次单击REFRESH按钮,您应该会看到数据集的以下结构:
- 单击绿色的保存按钮保存更改。
您刚刚创建了一个数据集来为您的仪表板提供数据,并对您的数据源进行了必要的调整。在下一个实验中,您将使用它创建仪表板。
实验 4 - 创建仪表板
您现在已经准备好开始构建仪表板了。让我们直接进入它:
- 在您的数据集页面上,单击NEW DASHBOARD按钮。
- 由于我们从数据集页面开始创建仪表板,您是否会注意到默认情况下已创建仪表板,并带有显示数据集所有字段的“table visual”。
- 单击表格视觉对象以确保它被选中(当它被选中时,您会在视觉对象周围看到一个蓝色边框)。选择表格视觉对象后,单击右侧的“Build”选项卡。
- 单击“Measures”输入框以将其选中。然后单击字段sensor_0和sensor_1从“Measures”列表中单击。这些字段将添加到“Measures”输入框中。
- 默认情况下,这些度量使用sum()聚合函数来添加。通过选择每个新添加的度量并选择Aggregates > Average将其更改为avg()。确保对这两个Measures都这样做。
- 单击“Dimensions”输入框将其选中。然后从Dimension列表中单击字段sensor_timestamp和sensor_id。这些字段将被添加到Dimensions输入框中。
- 选中Measures输入框中sensor_timestamp的字段,然后选择Order 和Top K > Descending。这将按降序显示表格中的值,最新的传感器读数位于顶部。
- 单击Refresh Visual以使用最新更改更新视觉。
- 最后,选择屏幕右侧的Settings选项卡并将Auto-refresh period(秒)的值更改为5。
- 单击仪表板顶部的Save按钮以保存更改,然后单击View进入查看/发布模式。这就是您的仪表板消费者将看到的:传感器读数通过流式管道进入,显示在实时仪表板中,自动更新。
实验 5 - 添加图表
仪表板通常是图形和图表的同义词。Cloudera Data Visualization 附带了无数图表类型来帮助可视化您的数据。在本实验中,您将向仪表板添加一个简单的条形图,使其更有趣。
- 在上面的查看模式仪表板上,单击EDIT按钮返回编辑模式。
- 单击右侧的“Visuals”选项卡。确保选择Local Impala连接和Sensor Data数据集,然后单击NEW VISUAL按钮。
- 在Visuals选项卡上,选择Scatter视觉类型:
- 根据您在上一个实验中学到的知识,输入以下属性:
X Axis: sensor_id
Y Axis: avg(sensor_0)
Colors: sensor_id
Size: avg(sensor_0)
Filters: sensor_timestamp
- 单击sensor_timestamp过滤器将其选中,然后单击[] Enter/Edit Expression。
- 在“输入/编辑表达式”窗口中输入以下表达式,以将图表中显示的数据限制为接收到的数据的最后一分钟。这将在 1 分钟的滚动窗口上创建图表。
[sensor_timestamp] > seconds_sub(now(), 60)
- 验证表达式并单击Apply。
- 单击右侧选项卡上的Visual > Style,然后在Colors部分中选择一个彩色调色板。
- 单击右侧选项卡上的VISUAL > Settings ,然后在Axes部分中将Y Axis Scale设置为:log10
- 展开Marks部分并将Legend Style设置为None。
- 单击
仪表板设计器顶部的按钮以排列仪表板中的视觉效果。拖动图表中的两个视觉对象以根据需要定位它们。完成后,单击APPLY LAYOUT。
- 单击Save按钮将更改保存到仪表板,然后单击View以切换到查看模式并检查您的实时仪表板的运行情况: