开始使用
安全组规则修改(可选)
- 云数据库RDS 默认使用3306端口,该方案默认针对子网网段及DLI网段开放,请参考修改安全组规则,配置IP地址白名单,以便能正常访问服务。
安全组实际是网络流量访问策略,包括网络流量入方向规则和出方向规则,通过这些规则为安全组内具有相同保护需求并且相互信任的云服务器、云容器、云数据库等实例提供安全保护。
如果您的实例关联的安全组策略无法满足使用需求,比如需要添加、修改、删除某个TCP端口,请参考以下内容进行修改。
- 添加安全组规则:根据业务使用需求需要开放某个TCP端口,请参考添加安全组规则添加入方向规则,打开指定的TCP端口。
- 修改安全组规则:安全组规则设置不当会造成严重的安全隐患。您可以参考修改安全组规则,来修改安全组中不合理的规则,保证云服务器等实例的网络安全。
- 删除安全组规则:当安全组规则入方向、出方向源地址/目的地址有变化时,或者不需要开放某个端口时,您可以参考删除安全组规则进行安全组规则删除。
- 查看OBS桶。在控制台单击“服务列表”,选择“对象存储服务 OBS”,单击进入OBS页面。该桶将作为用户上传驾驶行为数据文件的存储桶。
图1 OBS桶(DLI)
- 查看OBS桶。在控制台单击“服务列表”,选择“对象存储服务 OBS”,单击进入OBS页面。该桶将作为用户上传DLI连接RDS数据库SQL文件的存储桶。
图2 OBS桶(RDS)
- 查看RDS。在控制台单击“服务列表”,选择“云数据库RDS”,单击进入RDS页面。在“实例管理页面”,找到该解决方案已经创建的RDS实例。
图3 云数据库 RDS实例
- 查看DLI。在控制台单击“服务列表”,选择“数据湖探索 DLI”,单击进入DLI服务页面。单击“资源管理 > 队列管理”,查询创建的DLI队列。
图4 DLI队列
- 配置DLI服务授权。单击“全局变量>服务授权”,选定以下两项委托授权,单击“更新委托权限”。
图5 DLI服务授权
- 体验Demo样例。获取Demo数据样例文件,上传至3.3开始使用步骤1中的OBS桶中,即可触发函数工作流自动解压文件,创建DLI数据库表并主动写入上传的数据,生成DLI连接RDS的SQL文件并自动在MySQL中创建结果表。(定制化开发请获取开源代码参考代码注释,参照函数工作流FunctionGraph定制化开发修改代码并重新部署,上传驾驶行为数据zip或tar压缩文件至OBS桶即可自动创建DLI数据库表并写入数据。)
1、本方案仅支持上传压缩包,其他文件会导致本方案不能正常使用。
2、暂不支持OBS上传KMS加密的数据文件。
文件解压
- 压缩包的类型只支持zip和tar,压缩包文件名及其路径不能含中文。
- 单个压缩包解压后文件最大不超过200MB。
图6 上传驾驶行为数据文件压缩包
图7 自动解压数据文件至当前目录下
- 获取DLI连接RDS的SQL文件。查看3.3开始使用步骤2中的OBS桶,依次单击“对象”“下载”下载文件到本地,使用记事本打开,复制文件内容。
图8 查看rds结果桶
图9 使用记事本打开
- 创建同步数据表。在控制台单击“服务列表”,选择“数据湖探索 DLI”单击左侧导航栏“SQL编辑器”,代码框上部执行引擎选择“spark”,队列及数据库选择本方案3.2快速部署步骤3中创建的队列及数据库,粘贴步骤7复制的SQL文件内容,选中如图所示的SQL语句,单击“执行”创建与RDS MySQL 同步的数据表。刷新页面,即可查看数据表的创建结果。
图10 创建同步数据表
图11 查看执行结果
- 插入数据。选中如图所示的SQL语句,单击“执行”即可插入数据到event_records表,并同步写入到RDS数据表中。
图12 插入数据
- 查看SQL作业执行状态。依次单击左侧导航栏“作业管理”“SQL作业”查看SQL作业的执行状态。(按Demo案例,如果运行时长超过2分钟状态未更新,请刷新页面查看。)
图13 查看SQL作业执行状态
- 进入云数据库RDS控制台,选择3.2快速部署 步骤3创建的RDS实例,单击“登录”跳转至实例管理服务DAS 实例登录界面。
图14 云数据库RDS控制台
- 登录实例。输入密码,勾选记住密码,开启定时采集及SQL执行记录,单击“测试连接”登录实例。
图15 登录实例
- 查询同步到数据表的数据。单击“SQL查询”,执行如下SQL语句,即可查询到经过speak SQL作业处理与DLI同步的表数据。
图16 进入SQL查询
图17 执行SQL查询语句
执行DLI Sprak作业SQL查询
- 执行SQL查询。在控制台单击“服务列表”,选择“数据湖探索 DLI”单击左侧导航栏“SQL编辑器”,代码框上部执行引擎选择“spark”队列及数据库选择本方案3.2快速部署步骤3中创建的队列及数据库,单击“执行”执行以下SQL语句,对所有司机在某段时间的异常告警事件进行统计。更多SQL语法使用请参考Spark SQL语法概览。
图18 执行SQL查询
select driverID, carNumber, sum(isRapidlySpeedup) as rapidlySpeedupTimes, sum(isRapidlySlowdown) as rapidlySlowdownTimes, sum(isNeutralSlide) as neutralSlideTimes, sum(neutralSlideTime) as neutralSlideTimeTotal, sum(isOverspeed) as overspeedTimes, sum(overspeedTime) as overspeedTimeTotal, sum(isFatigueDriving) as fatigueDrivingTimes, sum(isHthrottleStop) as hthrottleStopTimes, sum(isOilLeak) as oilLeakTimes from event_records where time >= "2017-01-01 00:00:00" and time <= "2017-02-01 00:00:00" group by driverID, carNumber order by rapidlySpeedupTimes desc, rapidlySlowdownTimes desc, neutralSlideTimes desc, neutralSlideTimeTotal desc, overspeedTimes desc, overspeedTimeTotal desc, fatigueDrivingTimes desc, hthrottleStopTimes desc, oilLeakTimes desc
- 查询结果。在查询结果中,单击 ,实现“结果图形化”。进入图形化界面后“图形类型”选择“柱状图”“X轴”选择“driverID”“Y轴”选择“rapidlySpeedupTimes”“结果数目”选择“10”展示结果如下:
图19 查看结果
图20 结果图形化
SQL语句示例: 1、查询某个司机在某个时间段的详细记录: select * from event_records where driverID = "panxian1000005" and time >= "2017-01-01 00:00:00" and time <= "2017-02-01 00:00:00" 2、查看订单信息: select * from order_records where orderNumber = "2017013013584419488" order by time desc 3、根据司机和发车时间信息查询司机的详细行驶特点: select driverID, carNumber, latitude, longitude, siteName, time from detail_records where driverID = "panxian1000005" and time > "2017-01-30 16:00:00" and siteName IS NOT NULL order by time desc
数据说明
本案例中使用两类数据:(详见步骤6 体验Demo样例)
1、详单数据:车辆上报的详单数据,包括定时上报的位置记录和异常的驾驶行为触发的告警事件数据。
2、订单数据:记录了货运订单相关的信息。
字段名称 |
字段类型 |
字段说明 |
---|---|---|
driverID |
string |
驾驶员ID |
carNumber |
string |
车牌号 |
latitude |
double |
纬度 |
longitude |
double |
经度 |
speed |
int |
速度 |
direction |
int |
方向 |
siteName |
string |
地点 |
time |
timestamp |
记录上报时间 |
isRapidlySpeedup |
int |
急加速标识,“1”表示急加速,“0”表示非急加速 |
isRapidlySlowdown |
int |
急减速 |
isNeutralSlide |
int |
空挡滑行 |
isNeutralSlideFinished |
int |
空挡滑行结束 |
neutralSlideTime |
bigint |
空挡滑行时长 |
isOverspeed |
int |
超速 |
isOverspeedFinished |
int |
超速结束 |
overspeedTime |
bigint |
超速时长 |
isFatigueDriving |
int |
疲劳驾驶 |
isHthrottleStop |
int |
停车轰油门 |
isOilLeak |
int |
用油异常 |
字段名称 |
字段类型 |
字段说明 |
---|---|---|
orderNumber |
string |
订单号 |
driverID |
string |
驾驶员ID |
carNumber |
string |
车牌号 |
customerID |
string |
客户ID |
sourceCity |
string |
出发城市 |
targetCity |
string |
到达城市 |
expectArriveTime |
timestamp |
期望送达时间 |
time |
timestamp |
记录产生时间 |
action |
string |
事件类型,包括创建订单、开始发货、货物送达、订单签收等事件 |
函数工作流FunctionGraph定制化开发
本实例数据库表均使用python代码基于FunctionGraph创建,在实际使用过程中,用户可以根据自己的业务场景参考函数工作流 FunctionGraph使用流程对代码进行定制化开发。
- 在控制台单击“服务列表”,选择“函数工作流 FunctionGraph”,单击进入函数主页面,依次单击“函数”“函数列表”,打开该解决方案创建的函数。
图21 函数
- 函数代码相关配置。用户可以根据实际情况,进行二次定制化代码开发及参数配置。
图22 函数代码
图23 环境变量