文档首页 > > 最佳实践> 使用DLI进行车联网场景驾驶行为数据分析

使用DLI进行车联网场景驾驶行为数据分析

分享
更新时间: 2019/07/05 GMT+08:00

业务场景介绍

  • 场景描述

    2016年,全国机动车保有量有3亿多辆,其中,载货车1400多万辆,商用车3000多万辆,大中小型车队也在100万以上。对于这些车辆的管理来说,目前存在着管理粗放的现状,比如,司机偷油、违规驾驶、消极怠工等问题,其中30%的油耗成本、45%的保险费用、90%的事故都是由于不良驾驶行为以及管理不到位导致。

    基于成本压力和政府监管的要求,车辆精细化管理成为大势所趋。现在,在车联网技术的支持下,可以利用云计算、大数据强大的分析挖掘能力,辅助企业和车队管理者更加科学、方便、快捷地对车队进行管理。

  • 场景方案
    图1 场景方案
  • 场景任务

    根据已有的某货运公司车辆定时上报的详单数据和货运订单数据,DLI可以完成对该货运公司车辆行驶轨迹、违规记录明细的查询。

  • 数据说明
    • 详单数据

      车辆上报的详单数据,包括定时上报的位置记录和异常驾驶行为触发的告警事件数据。

      表1 详单数据

      字段名称

      字段类型

      字段说明

      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

      偷油漏油

    • 订单数据

      订单数据记录了货运订单相关的信息。

      表2 订单数据

      字段名称

      字段类型

      字段说明

      orderNumber

      string

      订单号

      driverID

      string

      驾驶员ID

      carNumber

      string

      车牌号

      customerID

      string

      客户ID

      sourceCity

      string

      出发城市

      targetCity

      string

      到达城市

      expectArriveTime

      timestamp

      期望送达时间

      time

      timestamp

      记录产生时间

      action

      string

      事件类型,包括创建订单、开始发货、货物送达、订单签收等事件

流程介绍

使用DLI进行驾驶行为数据分析的操作过程主要包括3个步骤:

步骤1:注册账号。使用DLI对数据进行分析之前,需要注册华为云账号并进行实名认证。

步骤2:上传数据。将数据上传到对象存储服务OBS,为后面使用DLI完成数据分析做准备。

步骤3:分析数据。使用DLI对待分析的数据进行查询。

步骤1:注册账号

注册华为云账号并进行实名认证。

  1. 注册华为云账号
    1. 登录华为云官方网站。
    2. 单击华为云官网右上角“注册”进入注册页面,请参见图2
      图2 华为云官网注册页面
    3. 填写“账号名”、“密码”和“手机号”,单击“免费获取短信验证码”按钮,系统将会发送验证码至手机,填写“验证码”,单击“同意协议并注册”。
  2. 实名认证

    根据国家法律规定,所有用户必须完成实名认证后才能使用云服务。

    1. 账号登录后,单击界面右上角用户名,再单击“实名认证”。
    2. 图3中选择“个人用户”或“企业用户”。
      图3 实名认证
    3. 根据提示信息完成实名认证。

步骤2:上传数据

将数据上传到对象存储服务OBS,为后面使用DLI完成数据分析做准备。
  1. 下载OBS Browser
    1. 登录华为云官网,在上方菜单栏“产品”中,单击“存储”分类下的“对象存储服务”。
    2. 进入对象存储服务界面后,单击“进入控制台”。
    3. 跳转到OBS服务控制台后,单击下载OBS Browser。
  2. 下载AK/SK
    1. 在Console界面,单击右上角用户名,单击“我的凭证” >“管理访问密钥” >“新增访问密钥”。
    2. 根据提示在弹出页面中填写信息,确认后,自动下载AK/SK文件。
  3. 通过OBS Browser上传数据
    1. 在本地解压OBS Browser,单击obs.exe运行OBS Browser,填入用户名,接入证书(AK),安全证书(SK),单击“确定”。请参见图4
      图4 OBS Browser
      说明:

      服务器地址:可通过地区和终端节点获取OBS服务的域名,其中,HTTPS协议端口号为“443”,HTTP协议端口号为“80”。

    2. 在当前页面单击“创建桶”,按照要求填写“区域”和“桶名”(例如:区域:southchina,桶名:DLI_demo),单击桶DLI_demo后,在页面左上角单击“上传”>“上传文件夹”,选择detail-records和order-records两个文件夹,将其中的数据上传到OBS中。
      说明:

      “detail-records”“order-records”文件夹可通过下载Data.part01.rar,Data.part02.rar和Data.part03.rar这三个附件解压获取。

步骤3:分析数据

使用DLI对待分析的数据进行查询。

  1. 创建数据库、表
    1. 在Console页面上方菜单栏中单击“产品”,单击“EI企业智能”分类中的“数据湖探索”。
    2. 创建demo数据库,在DLI控制台总览页面,选择“SQL作业”,单击“创建作业”,进入SQL作业编辑器。
    3. 在SQL作业编辑器左侧,选择“数据库”,单击创建数据库,请参见图5
      图5 创建数据库
      说明:

      “default”为内置数据库,不能创建名为“default”的数据库。

    4. 选择demo数据库,在编辑框中输入以下SQL语句:
      create table detail_records(
        driverID String,
        carNumber String, 
        latitude double,
        longitude double,
        speed int,
        direction int,
        siteName String,
        time timestamp,
        isRapidlySpeedup int,
        isRapidlySlowdown int,
        isNeutralSlide int,
        isNeutralSlideFinished int,
        neutralSlideTime long,
        isOverspeed int,
        isOverspeedFinished int,
        overspeedTime long,
        isFatigueDriving int,
        isHthrottleStop int,
        isOilLeak int) USING CSV OPTIONS (PATH 's3a://DLI-demo/detail-records/');
      说明:

      请注意,将SQL语句中的文件路径修改为实际存放详单数据的OBS路径。

    5. 单击“执行”,创建详单表detail_records,请参见图6
      图6 创建详单表
    6. 执行以下SQL语句,在demo数据库下创建告警事件表event_records,步骤同1.d
      create table event_records(
        driverID String,
        carNumber String, 
        latitude double,
        longitude double,
        speed int,
        direction int,
        siteName String,
        time timestamp,
        isRapidlySpeedup int,
        isRapidlySlowdown int,
        isNeutralSlide int,
        isNeutralSlideFinished int,
        neutralSlideTime long,
        isOverspeed int,
        isOverspeedFinished int,
        overspeedTime long,
        isFatigueDriving int,
        isHthrottleStop int,
        isOilLeak int) 
    7. 执行以下SQL语句,将告警事件数据从详单中抽取出来插入到event_records表中。
      insert into table event_records
      (select *
      from detail_records
      where isRapidlySpeedup > 0
      OR isRapidlySlowdown > 0
      OR isNeutralSlide > 0
      OR isNeutralSlideFinished > 0
      OR isOverspeed > 0
      OR isOverspeedFinished > 0
      OR isFatigueDriving > 0
      OR isHthrottleStop > 0
      OR isOilLeak > 0)
    8. 使用另一种方式创建订单表order_records,单击表菜单右边的加号,创建表,数据位置选择DLI,请参见图7。字段类型请参见 详单数据
      图7 创建订单表
    9. 将OBS数据导入到order_reocrds表,单击“数据管理”,展开demo数据库,单击order_records表,单击“导入”按钮,数据存放路径“s3a://DLI-demo/order-records/”。默认时间戳格式为“yyyy-MM-dd HH:mm:ss”,若采用其他日期格式,可打开“高级选项”手动输入。完成后单击“确定”。请参见图8
      图8 导入表数据
  2. 执行查询
    1. 执行以下SQL语句,对所有司机在某段时间的违规驾驶行为(异常告警事件)进行统计;常用查询语句可以设置为模板,下次查询的时候在模板管理页面可以查看,请参见图9。单击“执行”会跳转到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
      图9 设置模板
    2. 执行以下SQL语句,查询某个司机在某个时间段的详细违规记录。
      select
        *
      from
        event_records
      where
        driverID = "panxian1000005"
        and time >= "2017-01-01 00:00:00"
        and time <= "2017-02-01 00:00:00"
    3. 执行以下SQL语句,查询订单信息。
      select
        *
      from
        order_records
      where
        orderNumber = "2017013013584419488"
      order by
        time desc
    4. 执行以下SQL语句,根据司机和发车时间信息查询司机详细轨迹。
      select
        driverID,
        carNumber,
        latitude,
        longitude,
        siteName,
        time
      from
        detail_records
      where
        driverID = "zouan1000007"
        and time > "2017-01-30 16:00:00"
        and siteName IS NOT NULL
      order by
        time desc
分享:

    相关文档

    相关产品

文档是否有解决您的问题?

提交成功!

非常感谢您的反馈,我们会继续努力做到更好!

反馈提交失败,请稍后再试!

*必选

请至少选择或填写一项反馈信息

字符长度不能超过200

提交反馈 取消

如您有其它疑问,您也可以通过华为云社区问答频道来与我们联系探讨

跳转到云社区