时空位置大数据AI平台技术实现架构设计

1 开发语言选择
1.1 基于开源框架
以开源框架本身支持的主流语言作为选择,目前选择的框架,均支持Java语言。
1.2 定制开发的算法
从长远来看,人工智能算法需要依赖于分布式运算架构,无论是MR还是SPARK,两种平台均支持Java语言,所以选择Java语言为主。
1.3 纯运算函数
对于定制开发算法中,某些纯数学运算的函数,可以单独封装成C/C++运算库,供算法模块调用,充分利用C/C++在运算性能方面的优势。

2 系统体系

2.1 技术架构图
在这里插入图片描述
在这里插入图片描述
2.2 活动图/流程图
在这里插入图片描述
3 数据驱动层设计

3.1 功能设计
形态 Java类库
调用方式 引用jar包,调用类的方法

3.1.1 数据源类别
功能描述 设置数据源的类型
输入参数 枚举
输出参数 是否成功
备注 HDFS/Hbase/Hive/Mongodb/RDMS/File
3.1.2 数据源链接信息
功能描述 设置数据源链接参数
输入参数 连接串
输出参数 设置状态
备注

3.1.3 打开数据源
功能描述 打开数据源
输入参数
输出参数 是否成功
备注

3.1.4 关闭数据源
功能描述 打开数据源
输入参数
输出参数 是否成功
备注
3.1.5 查询数据源状态
功能描述 查询数据源状态
输入参数
输出参数 状态信息
备注
3.1.6 设置空间字段
功能描述 设置空间字段
输入参数 表名称、空间字段所对应源数据字段列表(五元组)
输出参数 状态
备注
3.1.7 设置标签字段
功能描述 设置标签字段
输入参数 表名称、ID字段、标签字段列表
输出参数 状态
备注

3.1.8 读取所有数据表
功能描述 读取所有数据表
输入参数
输出参数 数据列表
备注

3.1.9 按行读取数据
功能描述 按行读取数据
输入参数 行数
输出参数 数据集
备注
3.1.10 按字节读取数据
功能描述 按字节读取数据
输入参数 位置
输出参数 数据集
备注
3.1.11 按条件读取数据
功能描述 设置查询条件
输入参数 自定义SQL语句
输出参数 数据集
备注 根据数据源的不同,智能识别SQL数据的支持程度
3.1.12 创建数据表
功能描述 创建数据表
输入参数 自定义SQL语句
输出参数 结果
备注 根据数据源的不同,智能识别SQL数据的支持程度
3.1.13 按行插入数据
功能描述 按行插入数据
输入参数 自定义SQL语句
输出参数 结果
备注 根据数据源的不同,智能识别SQL数据的支持程度
3.1.14 按字节插入数据
功能描述 按字节插入数据
输入参数 自定义SQL语句
输出参数 结果
备注 根据数据源的不同,智能识别SQL数据的支持程度
3.1.15 更新数据
功能描述 设置更新条件
输入参数 自定义SQL语句
输出参数 结果
备注 根据数据源的不同,智能识别SQL数据的支持程度

3.2 SQL设计
3.2.1 SQL设计
3.2.1.1 引擎支持的SQL语句

语句 语句 说明
Create table 建表
Insert into 插入语句
Update table 更新语句
Drop table 删除表
Select 查询语句
where 条件查询
=
<
>
<=
>=

and
or
Join 连表
Order 排序
desc 降序
asc 升序
Group 分组
Limit 记录限制
Delete 删除记录
Distinct
Index 索引
create index 创建索引
drop index 删除索引
Count 求和
Average 求平均
Max 求最大值
Min 求最小值

扫描二维码关注公众号,回复: 9523305 查看本文章

3.2.1.2 不同数据库支持表格

SQL语句 Hive Hbase Pig Mongodb Jdbc(包含传统关系型数据库)
Create table √ √ √ √ √
Insert into √ √ √ √
Update table √ √ √ √
Drop table √ √ √ √ √
Select √ √ √ √ √
where √ √ √ √ √
= √ √ √ √ √
< √ √ √ √
> √ √ √ √
<= √ √ √ √
>= √ √ √ √
≠ √ √ √
and √ √ √ √ √
or √ √ √ √
Join √ √
Order √ √ √ √ √
desc √ √ √ √ √
asc √ √ √ √ √
Group √ √ √ √ √
Limit √ √ √ √
Delete √ √ √ √
Distinct √ √ √ √ √
Index √ √ √ √ √
√ √ √ √ √
√ √ √ √ √
Count √ √ √ √ √
Average √ √ √ √ √
Max √ √ √
Min √ √ √

3.3 数据类型设计

数据类型 长度 含义
Tinynit 1 整形
Int 4 整形
Float 4 单精度
Double 8 双精度
Boolean 1 布尔型
Varchar 变长 字符串
Binary 变成 字节数组
Timestamp 4 时间,毫秒数
Struct 变长 结构体,类似于C语言中的STRUCT的定义
Map 变成 键值对集合,类似于java中Map的定义

3.4 程序开发设计说明(以Mongodb为例)
3.4.1 程序实现调用流程

3.4.2 类图
以下为一个SQL解析转换核心类的类图设计举例:

3.4.3 顺序图
以下为一个普通sql查询的程序实现顺序图:

3.4.4 编码实现
以下为SQL解析转换核心类的一个操作符解析方法示例

4 分布式运算任务
4.1.1 MR任务构建
功能描述 MR任务构建
输入参数 抽象的MR任务输入共性参数
输出参数 任务ID
备注
4.1.2 MR任务结果获取
功能描述 获取MR任务的结果
输入参数 任务ID
输出参数 结果集
备注

4.1.3 RDD任务构建
功能描述 RDD任务构建
输入参数 抽象的RDD任务输入共性参数
输出参数 任务ID
备注
4.1.4 RDD任务结果获取
功能描述 获取RDD任务的结果
输入参数 任务ID
输出参数 结果集
备注

5 算法
5.1 聚类算法

功能描述 Kmeans、层次、网格等(参考算法列表文档)
输入参数 遵循开源框架规范,设计输入参数格式
输出参数 遵循开源框架规范,设计输出参数格式
备注 基于Mahout实现
5.1.1 Kmeans clustering算法
功能描述 Kmeans
输入参数 位置数据集(HDFS文件、矢量数组)
输出参数 Cluster簇信息结果列表(HDFS文件、簇数组)
备注 基于Mahout、MR/SPARK实现
5.1.2 Canopy clustering算法
功能描述 canopy clustering
输入参数 位置数据集(HDFS文件、矢量数组)
输出参数 Cluster簇信息结果列表(HDFS文件、簇数组)
备注 基于Mahout、MR/SPARK实现
5.1.3 层次聚类算法
功能描述 层次聚类
输入参数 位置数据集(HDFS文件、矢量数组)
输出参数 Cluster簇信息结果树(HDFS文件、簇Map)
备注 基于Mahout、MR/SPARK实现

5.1.4 网格聚类算法
功能描述 网格聚类
输入参数 位置数据集(HDFS文件、矢量数组)
输出参数 Cluster簇信息结果列表(HDFS文件、簇Map)
备注 基于Mahout、MR/SPARK实现

5.2 回归算法
功能描述 线性回归、逻辑回归等(参考算法列表文档)
输入参数 遵循开源框架规范,设计输入参数格式
输出参数 遵循开源框架规范,设计输出参数格式
备注 基于Mahout、Mllib实现
5.3 推荐算法
功能描述 协同过滤
输入参数 遵循开源框架规范,设计输入参数格式
输出参数 遵循开源框架规范,设计输出参数格式
备注 Mahout、MLLib
5.4 神经网络
功能描述 神经网络算法
输入参数 遵循开源框架规范,设计输入参数格式
输出参数 遵循开源框架规范,设计输出参数格式
备注 Deeplearning4J

6 分析组件
6.1 空间热点分析
功能描述 分析海量点数据的聚集分布特性
输入参数 海量二维时间空间点数据
输出参数 聚集点列表(中心点坐标、聚集数量、时段分布)
备注 调用聚类算法中的Canopy Clustering算法和Kmeans算法,实现该功能
6.2 区域筛查分析
功能描述 分析海量点数据在特定区域内的分布异常
输入参数 海量二维时间空间点数据、区域范围
输出参数 异常的类别、频次排序、等级评价
备注 调用聚类算法中的Canopy Clustering算法和Kmeans算法,实现该功能
6.3 伴行分析
功能描述 找出伴行人员
输入参数 一个人的行为轨迹点
海量人的行为轨迹点数据
输出参数 与之有接头行为的可疑人员列表,及其接头频次、位置。
备注 获取轨迹点
排除常规点
确定统计目标点
从海量位置数据中查询每个目标点周边的位置点
按照手机号码、频次进行归类和排序
输出结果

7 接口设计
7.1 分析组件API设计
交互对象 应用层调用
协议种类 HTTP、JAR
数据格式 JSON、文件、数据库、内部SQL
备注 针对分析组件进行一对一设计
7.1.1 中间结果存储
7.1.2 热点分析接口
功能描述 分析海量点数据的热点分布
输入参数 五元组的txt文件(tab分隔符)
输出参数 热点分布结果集txt文件,字段定义:
手机号码
聚集数量
中心点坐标
时段分布数组
协议 JAR、HTTP
备注

7.2 与大数据引擎接口

接口类型 数据接口
描述 调用大数据引擎,获取空间数据
协议种类 HTTP、C++、JAVA
数据格式 JSON/文件
备注 根据数据量、场景决定协议和数据格式类型
由大数据引擎实现

接口类型 能力接口
描述 调用大数据引擎,进行空间查询分析
协议种类 HTTP、C++、JAVA
数据格式 JSON/文件
备注 根据数据量、场景决定协议和数据格式类型
由大数据引擎实现
7.3 与数据中心接口

接口类型 数据接口
描述 调用数据中心,获取和存储空间数据
协议种类 S3、NAS、HDFS、Hbase 。。。。。。
数据格式
备注 与数据中心进行对接,从中抽取空间数据。
参考江苏厅项目

接口类型 服务能力接口
描述 为数据中心平台提供空间数据分析能力
协议种类 HTTP、C++、JAVA
数据格式 JSON/文件
备注 根据数据量、场景决定协议和数据格式类型

接口类型 计算能力接口
描述 利用数据中心的分布式存储和计算能力
协议种类 分布式虚拟机、MR、SPARK
数据格式 自有
备注

8 驻留点分析
8.1 逻辑架构图

8.2 与大数据接口
1、数据推送接口:
public void pushRowData(STMap_KM_RowData row)
2、数据推送的对象格式:

3、扩展:
当AI和大数据是分布式部署架构时,可以考虑采取KAFKA进行数据推送。

8.3 与AI应用接口
1、查询服务:
http://www.ztmapinfo.com/AI/ZTMapAiZLD?opt=query&mp=13802001401,13582937463&d1=20170211&d2=20170212

2、返回结果:

aicallbak(‘query’,[{ “_id” : { “KaTeX parse error: Expected 'EOF', got '}' at position 34: …2b1201a1d15a73"}̲ , "mp" : "1380…oid” : “5a4494545e2b1201a1d15a74”} , “mp” : “13802001401” , “count” : 106 , “cx” : 118.89789958307131 , “cy” : 31.9939472781856 , “ct” : “2017-12-22” , “ts” : "04:50 05:50 12:6 "},{ “_id” : { “KaTeX parse error: Expected 'EOF', got '}' at position 34: …2b1201a1d15a75"}̲ , "mp" : "1380…oid” : “5a4494545e2b1201a1d15a76”} , “mp” : “13802001401” , “count” : 112 , “cx” : 119.25809289472363 , “cy” : 32.27291014961941 , “ct” : “2017-12-22” , “ts” : "10:50 11:50 12:12 "},{ “_id” : { “KaTeX parse error: Expected 'EOF', got '}' at position 34: …2b1201a1d15a77"}̲ , "mp" : "1380…oid” : “5a4494545e2b1201a1d15a78”} , “mp” : “13802001401” , “count” : 15 , “cx” : 119.31845321573358 , “cy” : 32.28825387784546 , “ct” : “2017-12-22” , “ts” : "12:15 "},{ “_id” : { “KaTeX parse error: Expected 'EOF', got '}' at position 34: …2b1201a1d15a79"}̲ , "mp" : "1380…oid” : “5a4494545e2b1201a1d15a7a”} , “mp” : “13802001401” , “count” : 15 , “cx” : 119.3768997474373 , “cy” : 32.30618280467222 , “ct” : “2017-12-22” , “ts” : "12:15 "},{ “_id” : { “KaTeX parse error: Expected 'EOF', got '}' at position 34: …2b1201a1d15a7b"}̲ , "mp" : "1380…oid” : “5a4494545e2b1201a1d15a7c”} , “mp” : “13802001401” , “count” : 13 , “cx” : 119.43339806141759 , “cy” : 32.32351410060473 , “ct” : “2017-12-22” , “ts” : "12:13 "},{ “_id” : { “$oid” : “5a4494545e2b1201a1d15a7d”} , “mp” : “13802001401” , “count” : 101 , “cx” : 118.30556648313873 , “cy” : 32.00102538238843 , “ct” : “2017-12-22” , “ts” : "08:53 09:1 06:1 07:46 "}])
8.4 数据存储
数据存储目前考虑以分布式Mongodb数据库作为存储介质:
1、驻留点需要频繁查询
2、查询并发和速度要求
3、与Hadoop、Spark分析平台的兼容性
4、可扩展性

8.5 数据查询DEMO
http://www.test.com/AI/ai.html

8.6 时间顺序

  1. 真实数据测试,特征分析:基站漂移、地理分布、多人员少轨迹
  2. 跟大数据平台对接后,AI生成数据尺寸
  3. 算法时序:
  4. 11天前的一天数据
  5. 10天内每天的所有数据
  6. 按照时间顺序判断(基站漂移阈值)
  7. Mongodb海量数据瓶颈
  8. 大数据量查询效率

开发顺序:
一、按时序算法、真实数据测试
一个星期

二、数据吞吐测试
三、计算效率测试
四、查询效率测试

发布了10 篇原创文章 · 获赞 3 · 访问量 1693

猜你喜欢

转载自blog.csdn.net/u011180278/article/details/104434594
今日推荐