【物联网数据分析】物联网数据管道功能初探
一、背景介绍
在数据分析中一个重要的环节就是获取和整理数据。一个通用的说法就是ETL,(Extract,Transform,Load),负责将分布的、异构数据源中的数据抽取到临时中间层后进行清洗、转换、集成,最后加载到数据仓库或数据集市中,成为联机分析处理、数据挖掘的基础
ETL中工作量最大的通常是T部分(清洗,转换),往往占整个工作的2/3。当前大家说数据清洗时,基本上都是指ETL中的Transform部分。
二、问题和挑战
在物联网的数据分析中,获取数据也是一个不可或缺的工作。虽然物联网平台的数据从设备采集而来,有一定格式,但是存在多种问题:
设备上报的原始数据的格式不标准。不同类型的设备上报的数据格式不一致,比如设备Id、时间事件、属性等字段可能都是不同。有的时间参数以时间戳标识,有的时间参数以UTC或者有时区标识。属性也存在多种不同JSON嵌套方式,或者取值的单位不一致,比如有的是米,有的是厘米等。
设备上报数据可能存在质量问题。不同于传统数据产生的过程,物联网数据是由各种能力参差不齐,部署与工作环境可能非常恶劣的设备产生,容易产生数据异常跳变,缺失等问题,导致了物联网的数据存在质量问题。而物联网的某些场景,比如工业的故障定位和预防性维护场景,对数据质量要求很高。
采集的数据与目标分析对象缺乏关联。IoT设备接入收到的数据所关联的对象并不是真正的设备,可能是物联网的网关,而网关只是通道,不是需要进行数据分析的设备。此时需要把数据重新按照设备来着组织。比如设备Id从网关Id转成最终的设备Id,属性按照不同设备来区分,这样网关上报的一条数据可能按设备会拆分成多条数据。
在数据分析领域已经有很多ETL工具了,那为了什么需要适合物联网的数据清洗功能呢?因为:
传统ETL对接的数据来源都以各类数据库为主,较少直接对IoT实时流进行清洗操作,需要满足IoT的高并发,低时延处理要求;
传统ETL工具不是针对IoT场景设计,而是针对结构化数据进行处理,当面对物联网设备产生的非结构化数据时,因为无法理解设备物模型,致使很难高效处理。
传统ETL工具并没有针对IoT常见的清洗操作做特殊优化,比如提供插值处理、,用户需要大量coding完成脚本开发。
三、物联网数据分析中的数据管道
在物联网分析服务的数据管道提供数据清洗的功能。数据管道在物联网数据分析服务的位置入下图所示;
数据管道是物联网分析服务数据的统一入口,所有进入IoT数据分析服务的数据都必须通过数据管道处理。数据管道中包含3个部分:数据源,数据清洗和数据输出。
数据源可以是IoT设备接入云服务,也可以是公有云的其他具有存储数据能力的其他云服务。当数据源时IoT设备接入云服务时,可以从IoT设备接入云服务获取设备模型定义,以方便的生成管道中的数据处理动作。
数据清洗提供对物联网数据的转换功能,服务预置了常用的数据清洗算子,用户可以根据数据处理的要求来组合这些算子而不需要开发代码。
数据输出表示的管道处理的结果和后续的目标。管道处理的结果数据仍然是设备数据,管道并没有改变数据的本质。管道的数据输出有以下目标:
数据输出到IoT数据分析服务中的资产模型,为资产建模提供设备数据来源;
数据输出到实时分析,以快速对设备数据进行故障检测等实时分析处理;
数据输出到存储,这样可以对数据进行时序分析和离线分析;
数据输出到其他云服务,以使用公有云丰富的云服务对数据进行进一步处理。
四、数据管道的使用场景
一个数据源对应一个管道同时对应一个数据存储
这种方式是常用使用方式,数据源、管道、设备存储都是一对一关系。由于关系简单,便于管道的维护。
一个数据源对应多个管道对应不同数据存储
一个数据源可能需要不同的数据处理,这几种不同清洗处理差异较大,且处理性能要求不同,需要进行资源隔离,这样可以用不同的管道,输出到不同存储。不同的存储可以设置不同的数据老化周期,以降低使用成本。
一个数据源对应多个管道对应同一数据存储
同理,管道也支持输出到同一存储,但是要求不同管道间的数据不要有冲突。
不同管道输出的数据即为不同的设备数据。所以对于资产模型和实时分析,通过选择管道来关联设备数据。
- 点赞
- 收藏
- 关注作者
评论(0)