使用Spark机器学习,流技术和Kafka API监视实时Uber数据(第1部分)

根据Gartner的预测 ,到2020年,四分之一的互联汽车将构成物联网的主要组成部分。 互联车辆预计每小时可产生25GB数据,可对其进行分析以提供实时监控和应用程序,并将带来新的出行和车辆使用概念。 当前,利用大数据发挥卓越优势10个主要领域之一是改善城市。 例如,对GPS汽车数据的分析可以使城市根据实时交通信息优化交通流量。

优步正在使用大数据来完善其流程 ,从计算优步的定价到寻找汽车的最佳定位以最大化利润。 在本系列博客文章中,我们将使用公共Uber行程数据来讨论构建用于分析和监视汽车GPS数据的实时示例。 使用实时数据的机器学习通常分为两个阶段:

  • 数据发现 :第一阶段涉及对历史数据进行分析以构建机器学习模型。
  • 使用模型进行分析 :第二阶段在现场活动的生产中使用模型。 (请注意,Spark确实提供了一些流机器学习算法,但是您仍然经常需要对历史数据进行分析。)

1个

在第一篇文章中,我将帮助您开始使用Apache Spark的机器学习K-means算法根据位置对Uber数据进行聚类。

聚类

Google新闻使用一种称为聚类的技术,根据标题和内容将新闻文章分为不同的类别。 聚类算法发现数据集合中出现的分组。

2

在聚类中,一种算法通过分析输入示例之间的相似性将对象分为类别。 群集用途的示例包括:

  • 搜索结果分组
  • 客户分组
  • 异常检测
  • 文字分类

3

聚类使用无监督算法,该算法没有预先的输出(标记的数据)。

4

K均值是最常用的聚类算法之一,它将数据点聚集成预定数量的聚类(k)。 使用K均值算法的聚类首先将所有坐标初始化为k个质心。 每次使用算法时,都会基于某个距离度量(通常是欧几里得距离)将每个点分配给它最近的质心。 然后将质心更新为该遍中分配给它的所有点的“中心”。 重复此过程,直到中心的变化最小。

用例数据集示例

示例数据集是Uber出行数据,FiveThirtyEight纽约市出租车和豪华轿车委员会获得 。 在此示例中,我们将基于经度和纬度发现Uber数据的群集,然后我们将按日期/时间分析群集中心。 数据集具有以下架构:

  1. 日期/时间 :Uber取车的日期和时间
  2. 纬度 :优步皮卡的纬度
  3. :优步皮卡的经度
  4. 基地 :隶属于优步皮卡的TLC基地公司

数据记录为CSV格式。 示例行如下所示:

2014-08-01 00:00:00,40.729,-73.9422,B02598

示例用例代码

首先,我们导入Spark ML K-means和SQL所需的包。

5

我们使用Spark Structype指定架构(请注意,如果您使用的是笔记本,则不必创建SQLContext)。

6

接下来,我们将数据从CSV文件加载到Spark DataFrame中。

7

使用Spark 1.6和–packages com.databricks:spark-csv_2.10:1.5.0,我们从CSV 文件数据源创建DataFrame并应用架构。

8

或使用Spark 2.0,我们可以指定要加载到DataFrame中的数据源和架构,如下所示

9

请注意,对于Spark 2.0,在将数据加载到DataFrame中时指定架构将提供比架构推断更好的性能

在Zeppelin笔记本中运行后,DataFrame printSchema()以树形格式将模式打印到控制台,如下所示:

10

DataFrame show()显示前20行:

11

定义要素数组

为了让机器学习算法使用特征,对特征进行转换并将其放入特征向量,这些向量是代表每个特征值的数字向量。 在下面,使用VectorAssembler来转换和返回带有向量列中所有功能列的新DataFrame。

12

13

df2.show的输出:

14

接下来,我们创建一个KMeans对象,设置参数以定义聚类数和最大迭代数以确定聚类,然后将模型拟合到输入数据。

15

kmeans

模型clusterCenters的输出:

17

下面,聚类中心显示在Google地图上:

18岁

接下来,我们使用该模型获取测试数据的聚类,以进一步分析聚类。

19

20

现在我们可以问一些问题,例如“一天中的哪个小时以及哪个集群的接机次数最多?”

21

每个群集中发生了多少次接机?

22

使用Zeppelin笔记本,我们还可以在条形图或图形中显示查询结果。 x轴下方是小时,y轴下方是计数,而颜色是不同的簇。

23

您可以使用给定名称将DataFrame注册为临时表,例如:df.registerTempTable(“ uber”),然后使用sqlContext提供的SQL方法运行SQL语句。 下面以Zeppelin笔记本为例。

24

25

可以将模型持久保存到磁盘,如下所示,以便以后使用(例如,使用Spark Streaming)。

26

软件

本教程将在Spark 1.6.1上运行

  • 您可以从此处下载代码,数据和自述文件以运行此示例: https : //github.com/caroljmcdonald/spark-ml-kmeans-uber
  • 这篇文章中的示例可以在Spark外壳或Zeppelin笔记本中运行。 如使用Mapr Sandbox上的Spark入门所述 ,使用密码为userid user01的用户登录到MapR Sandbox。 按照自述文件中的说明,使用scp将示例数据文件复制到沙箱主目录/ user / user01。
  • 要作为独立应用程序运行,请按照自述文件中的说明,使用scp将jar文件复制到集群,然后使用以下命令运行:
  • $ spark-submit – com.sparkml.uber.ClusterUber类–master local [2] – com.databricks:spark-csv_2.10:1.5.0 spark-kmeans-1.0.jar包
  • 要在Spark Shell中运行,请使用以下命令启动Spark Shell:$ spark-shell –master local [1]
    • 然后从ClusterUber.scala文件中复制/粘贴代码

在此博客文章中,我们介绍了如何开始使用Apache Spark的机器学习K-means进行集群。 在下一篇博客文章中,我们将研究在Spark Streaming应用程序中使用该模型。

想了解更多?

翻译自: https://www.javacodegeeks.com/2016/11/monitoring-real-time-uber-data-using-spark-machine-learning-streaming-kafka-api-part-1.html

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值