上云无忧 > 文档中心 > 百度智能云流式计算 BSC 实践 - 物联网设备实时报警统计(流表Join)
百度流式计算 BSC
百度智能云流式计算 BSC 实践 - 物联网设备实时报警统计(流表Join)

文档简介:
概览: 统计每个设备每分钟报警次数。 需求场景: 用户拥有1千多台设备,分布在不同城市的多个厂区,每个设备上的传感器大概每5秒采集并上传数据到 物联网核心套件(IoT Core)或 物接入(IoT Hub) 的 MQTT 当中作为第一个 source 【百度智能云】流式计算BSC
*此产品及展示信息均由百度智能云官方提供。免费试用 咨询热线:400-826-7010,为您提供专业的售前咨询,让您快速了解云产品,助您轻松上云! 微信咨询
  免费试用、价格特惠

概览

统计每个设备每分钟报警次数。

需求场景

用户拥有1千多台设备,分布在不同城市的多个厂区,每个设备上的传感器大概每5秒采集并上传数据到 物联网核心套件(IoT Core)或 物接入(IoT Hub) 的 MQTT 当中作为第一个 source,一些维度信息存放在 云数据库(RDS)作为第二个 source,在我们 BSC 中创建 SPARK_STREAM/SQL 类型的作业用于每分钟报警次数的统计,并实时将处理结果推送到 云数据库(RDS),最终在 数据可视化(Sugar BI)的可视化报表中展示。

方案概述

用户设备 → IoT Hub → |

                                 |→ BSC → RDS → Sugar BI

                      RDS → |

配置步骤

一个完整的 Spark SQL 作业由 source 表、sink 表和 DML 语句构成。

定义 MQTT Source表

CREATE TABLE source_mqtt_table( sensorId STRING, time STRING, status INTEGER )
 WITH( type = 'MQTT', brokerUrl = 'tcp://duig1nr.mqtt.iot.bj.baidubce.com:1883', 
--必填 topic = 'sensor', --必填 username = 'iotdemo', --必填 password = 'iotdemo', 
--必填 encode = 'JSON', connectionTimeout = '30', --非必填,访问超时设置,
单位:s keepAliveInterval = '60', --非必填,规定时间段内不活动时连接会被断开,
单位:s maxBatchMessageNum = 'Int.Max', --非必填,每个batch最大数据条数 maxBatchMessageSize =
 'Int.Max' --非必填,每个batch最大消息字节数 );

定义 RDS Source表

CREATE TABLE source_rds_table( sensorId STRING, sensorType STRING, deviceId STRING, useTime INTEGER )
 WITH( type = 'RDS', user = 'rdsdemo', --必填,数据库用户名 password = 'rdsdemo', --必填,
数据库访问密码 url = 'jdbc:mysql://mysql55.rdsmwi1zrjn5ww8.rds.bd.baidubce.com:3306/bsc_rds
_test?useUnicode=true&characterEncoding=UTF8', --必填,jdbc访问RDS的url dbTable = 'test' --必填,数据表名称 );

定义RDS sink表

CREATE TABLE sink_rds_table( deviceId STRING, time TIMESTAMP, nums INTEGER ) WITH( type = 'RDS',
 user = 'iotdemo', --必填,数据库用户名 password = 'iotdemo11', --必填,数据库访问密码 url = 
'jdbc:mysql://mysql55.rdsmwi1zrjn5ww8.rds.bd.baidubce.com:3306/bsc_rds? 
 useUnicode=true&characterEncoding=UTF8', --必填,jdbc访问RDS的url dbTable = 'iotdemo' --必填,数据表名称 );

编写数据统计DML语句

统计这一分钟内每个设备的报警次数。由于使用的是滚动窗口,也就意味着数据将在每分钟结束时候产出一份并写入到RDS。

INSERT INTO sink_rds_table outputmode append SELECT source_rds_table.deviceId, CAST(FROM_UNIXTIME(CAST
(source_mqtt_table.time AS LONG)) AS TIMESTAMP) AS time, count(*) AS nums FROM source_mqtt_table
 INNER JOIN source_rds_table ON source_mqtt_table.sensorId = source_rds_table.sensorId WHERE source
_mqtt_table.status = 1 GROUP BY window(time, "1 minute"), deviceId

相关产品

物联网核心套件 IoT Core、云数据库 RDS、数据可视化Sugar BI

相似文档
  • 流计算作业中的代码包括几部分? 流计算作业中的代码包括DDL语句(用于创建输入端、输出端)、DML语句(业务逻辑的执行语句)。目前,同一个作业内支持多个输入端、一个输出端。 【百度智能云】流式计算BSC
  • Sugar BI是百度智能云推出的敏捷 BI 和数据可视化平台,通过拖拽图表组件可实现 5 分钟搭建数据可视化页面,组件丰富,开箱即用,无需SQL和任何编码。通过可视化图表及强大的交互分析能力,企业可使用 Sugar BI有效助力自己的业务决策。
  • V4.6.1 / 2022-10-10: 新功能:历史版本、回收站。 新功能:私有部署中支持「数据服务」。 API 方式绑定图表数据时,支持API 认证。 数据模型的自定义 SQL 视图中支持嵌入 URL 参数等。 数据模型中整数类型的字段支持转字符串。 报表中也支持隐藏图表的 loading 效果。
  • 组织: 一般指中小型企业,事业单位,学校院系或大型公司的部门。Sugar BI将会按照组织进行费用的收取,一个用户可以属于多个组织,一个组织下有多个用户。详见什么是组织。 空间: 组织下面可以创建多个空间,一般是建议按照项目或者团队来划分空间,空间之间数据不共享,每个空间下都有自己独立的权限管理。详见什么是空间。
  • 版本说明: 以下文档中的账号数、用户数都是指可以登录Sugar BI的百度智能云账号数目,在Sugar BI中可以多个用户共用同一份Sugar BI(详见 Sugar BI 中的组织),在组织中可以对不同用户做细粒度的权限管控。
官方微信
联系客服
400-826-7010
7x24小时客服热线
分享
  • QQ好友
  • QQ空间
  • 微信
  • 微博
返回顶部