SparkStreaming + LogisticRegression 实现路况预测

目录

SparkStreaming + LogisticRegression 实现路况预测

1.项目介绍

2.前置知识

2.1 RDD

2.2 SparkStreaming

2.3 kafka

2.4 redis

2.5 LogisticRegression

3.代码实现

3.1 数据准备


SparkStreaming + LogisticRegression 实现路况预测

1.项目介绍

本篇介绍如何实现一个实时路况拥堵情况预测功能的系统。我们先来分析一下如何实现,以此来确定项目所使用的技术栈。

首先,我们来在现这样一个场景:假设有一条路,这条路上有2个摄像头,用来拍摄记录车辆经过时的速度,然后他会把数据实时发送到后台对应的消息队列中(我们用 kafka)。这就是我们的数据源。然后我们获取到数据,可以对数据进行处理计算,得出我们想要分析的结果,然后把数据存入 redis 中供 web 端展示使用。项目基本架构如下图所示:

既然是预测,那我们就要确定所使用的机器学习算法是哪一个?这里我们选择 LogisticRegression (逻辑回归算法)。为什么要选择这个算法呢?首先,我们知道逻辑回归是做分类的,尤其是二分类。这时候你可能会问,我路况的拥堵情况可能有很多种,比如我们可以把他分为 良好——一般——严重这3个等级。也就是说这是个多分类问题。那么我们利用逻辑回归算法做出分类呢?我们可以把问题简化,因为逻辑回归就适合做二分类,那我们为什么不把路况情况分为 良好——其他,一般——其他?这样我们就需要2个模型来完成一个3分类问题。其实所有的多分类我们都可以转化为二分类。

2.前置知识

2.1 RDD

RDD 是 spark 中的核心概念,官方称为弹性分布式数据集,你可以把他认为就是一堆数据的抽象,这堆数据可以利用他的 API 进行一系列的转换、计算。

2.2 SparkStreaming

SparkStreaming 是一个流式微批计算,说白了就是攒一堆数据隔一段时间,计算一次,就这样一直持续下去。他对外封装了 DStream 这个 对象,你可以简单的把他看为另一种形式的RDD。官方介绍地址是 http://spark.apache.org/docs/latest/streaming-programming-guide.html

2.3 kafka

大数据中常用的消息队列(mq),你可以简单的把他看为一个快递员,就是用来存数据和取数据的地方。他干不了复杂的事,所以把他想简单一点。他的作用就是 削峰填谷,类似于堤坝的作用。在系统中就是 SparkStreaming 的数据源。

2.4 redis

一个高性能的K-V数据库,用来做缓存。没啥好说的。

2.5 LogisticRegression

逻辑回归算法是广义上的线性回归算法,线性回归算法是找一根线来拟合空间中的点,用这样一根线来代表空间中的点。逻辑回归是用来做2分类的。逻辑回归用到了线性回归算法公式,所以称之为广义上的线性回归算法。大家可以把这些算法当作一个个工具来使用就行了。代码上大牛们已经帮我们封装的很好了,我们只需要知道什么时候用什么样的算法最合适,这就够了。

3.代码实现

3.1 数据准备

这是我们数据其中的一条

'310999003702', '3109990037020320140820141230645','沪M05016','','2014-08-20 14:09:35','0',10,'NS', 0.00,'2','','310999','310999003702','03','','','2','','','2014-08-20 14:12:30','2014-08-20 14:16:13',0,0,'2014-08-21 18:50:05','','',' '

其中第一列数据为相机编号,同时也代表了一条路。第三列数据是车牌号,第四列是经过时间,第五列是经过时候的车速。

3.2 代码

redis 连接客户端工具

import org.apache.commons.pool2.impl.GenericObjectPoolConfig
import redis.clients.jedis.JedisPool

object RedisClient extends Serializable {
  val redisHost
  • 2
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值