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 求最小值

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. 大数据量查询效率

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

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

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

  1. 优炫软件受邀参与《大数据 数据库管理平台技术要求》编制工作

    近日,中国信通院云计算与大数据研究所依托中国通信标准化协会大数据技术标准推进委员会(CCSA TC601)和中国信通院数据库应用创新实验室(CAICT DBL),联合优炫软件.中移信息.广东移动.联通 ...

  2. 论建立全国充电桩大数据AI平台提供统一充电服务

    论建立全国充电桩大数据AI平台提供统一充电服务 李万鸿 2020-8-23 摘要:电动车的使用越来越广,充电市场随之兴起,有多家公司运营充电业务,目前充电桩已达122万台,充电桩的硬件品牌繁多,使用软 ...

  3. 数据仓库系统的技术体系架构设计

    数据仓库系统的技术体系架构设计 作者:成晓旭 该数据仓库系统的主要功能是从众多外部系统中,采集相关的业务数据,集中存储到系统的数据库中.系统内部对所有的原始数据通过一系列处理转换之后,存储到数据仓库的 ...

  4. 医疗大数据服务平台技术架构有哪些

    医疗健康大数据服务平台是一个包含多个业务系统.多个自身管理软件.是一系列软.硬件和人员.政策支持的综合系统体系,统一建设医疗健康云计算服务中心,集中存储居民医疗卫生信息和居民电子健康档案等数据,满足社 ...

  5. python做大数据的框架_Python+大数据计算平台,PyODPS架构手把手教你搭建

    原文链接:http://click.aliyun.com/m/13965/ 在2016年10月的云栖社区在线培训上,来自阿里云大数据事业部的秦续业分享了<双剑合壁--Python和大数据计算平台 ...

  6. 电商数仓描述_大数据企业级电商数据仓库架构设计和实现(技术点与企业接轨)...

    课程咨询和资料获取请加老师QQ  1011800132 该项目以国内电商巨头实际业务应用场景为依托,紧跟大数据主流需求,对电商数仓的常见实战指标以及难点实战指标进行了详尽讲解,让你迅速成长,获取最前沿 ...

  7. python大数据论坛_干货 | Python+大数据计算平台,PyODPS架构手把手教你搭建

    数据分析和机器学习 大数据基本都是建立在Hadoop系统的生态上的,其实一个Java的环境.很多人喜欢用Python和R来进行数据分析,但是这往往对应一些小数据的问题,或者本地数据处理的问题.如何将二 ...

  8. 三级综合医院数据集成平台建设与架构设计 | 实践分享

    1.医院数据集成平台建设的背景 国内大多数三级医院信息化起步于上世纪90年代初,至今发展有将近30年历史,主要分为四个阶段: 第一阶段,财务电子化模式:上世纪90年代中期,北上广的三甲医院已开始引入基 ...

  9. 从 Airflow 到 Apache DolphinScheduler,有赞大数据开发平台的调度系统演进

    点击上方 蓝字关注我们 作者 | 宋哲琦 ✎ 编 者 按 在不久前的 Apache  DolphinScheduler Meetup 2021 上,有赞大数据开发平台负责人 宋哲琦 带来了平台调度系统 ...

最新文章

  1. 词汇的理解 —— 汉译英(术语)
  2. maven2创建或者导入eclipse工程 设置M2_REPO消除错误
  3. javascript-for-loop-example--reference
  4. 俄罗斯方块android论文,基于Android的俄罗斯方块游戏设计与实现(论文+任务书+答辩PPT+设计源码)...
  5. 【机器学习】一位机器学习高手的个人技术书目
  6. 牛顿法、梯度下降法、高斯牛顿法、Levenberg-Marquardt算法
  7. LinkedHashSet VS HashSet
  8. NLP大神推荐的机器学习入门书单(附大量百度网盘电子书)
  9. TikZ学习笔记(三)图形的标记与交点
  10. java数组为什么可以迭代吗_另一个“只能迭代数组或java.lang.Iterable实例”的问题...
  11. HTML5:表单提交
  12. 使用Thrift让Python为Java提供服务
  13. C结构中包含自己的嵌套定义
  14. 电视html接口,HDMI是什么接口?
  15. java实现MongoDB中unwind与match用法
  16. 利用 JavaScript 快速切换正体中文和简体中文
  17. python身份证号码共18位_Python实现身份证号码解析
  18. 高通see架构ppg测试流程sns_client_test_cpp
  19. KD2684S绕组匝间故障检测仪
  20. python用七巧板图片画个图_画一个太大而不能放进一个七巧板的图像

热门文章

  1. 缓存服务器 之 Linux下缓存服务器的应用
  2. excel求方差和标准差的函数_Excel如何计算方差与均方差
  3. P2P 之 UDP穿透NAT的原理与实现(附源代码)
  4. linux 蓝牙发送文件,如何在Ubuntu上使用蓝牙进行文件传输
  5. 大脑笔记:快速记忆之三大方法记忆圆周率前一百位
  6. 关于NCT75DMR2G的使用总结(温度传感器)
  7. 当没有接口文档时候,测试人员如何测试?
  8. Linux磁盘空间被占用的释放方法
  9. 关于av_freep
  10. 【BUG记录】关于os.chdir()改变路径导致的FileNotFound报错