Spark出租车数据实验

目录

  • Spark出租车数据实验
    • 【实验目的】
    • 【实验原理】
    • 【实验环境】
    • 【实验步骤】
      • 1.数据加载
      • 2.数据分析
      • 3、模型构建
      • 4.可视化展现

【实验目的】

主要使用出租车上传的GPS点作为分析对象,使用Kmeans把出租车轨迹点聚类,找出出租车出现密集的地方,并用地图的方式进行可视化展示

【实验原理】

(1)数据的准备。
(2)创建DataFrame。
(3)使用kmeans聚类。
(4)聚类结果可视化。

【实验环境】

操作系统:Linux
开发环境:pyspark命令行

【实验步骤】

1.数据加载

数据路径:
http://10.90.3.2/HUP/spark/taxi.csv

终端下载数据

cd /home/ubuntu
wget http://10.90.3.2/HUP/spark/taxi.csv

该实验采用数据为出租车载客时GPS记录数据集,数据格式为CSV,CSV格式是数据分析中常见的一种数据格式。

数据共4列,列之间以“,”分割。

tid:出租车编号 lat:维度 lon:经度 time:时间戳

安装软件依赖

pip install numpy

2.数据分析

(1)创建DataFrame
首先终端执行如下命令进入交互式命令行:

pyspark

使用textFile函数读取csv文件创建taxi_data,然后使用map算子操作将按照逗号隔开的文本创建RDD。

taxi_data = sc.textFile("/home/ubuntu/taxi.csv")
taxi_rdd=taxi_data.map(lambda line:line.split(','))

创建矢量RDD,矢量两个参数分别为纬度和经度。在下文的聚类函数中需要该格式RDD进行聚类。

from  pyspark.ml.linalg  import  Vectors
taxi_row=taxi_rdd.map(lambda x: (Vectors.dense (x[1],x[2]), ))

使用createDataFrame创建DataFrame,并查看数据。

taxi_df=spark.createDataFrame(taxi_row,["features"])
taxi_df.show(5)

3、模型构建

输入和输出列是用户使用kmeans方法时候的参数类型,默认的输入列名为features,输出的列名为prediction。KMeans方法中包含若干参数,其中k为分簇个数,seed为种子点。

from pyspark.ml.clustering import KMeans
kmeans=KMeans(k=3, seed=1)
model=kmeans.fit(taxi_df)
centers=model.clusterCenters()
print(centers)

4.可视化展现

申请地图key

使用百度地图接口需要百度的一个认证,也就是需要在登录百度地图开发平台申请key,申请key地址:http://lbsyun.baidu.com/apiconsole/key,申请界面如图

点击创建应用

聚类结果可视化

已经得到了聚类结果坐标,本节任务就是把这些点可视化出来即可。根据百度开放平台提供的例子简单地编写一些html代码即可展示相应的点,代码核心部分如下:

<!DOCTYPE html>
<html>
<head>
<meta name="viewport" content="initial-scale=1.0, user-scalable=no" />
<meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
<title>kmeans聚类可视化</title>
<style type="text/css">
html{height:100%}
body{height:100%;margin:0px;padding:0px}
#container{height:100%}
</style>
<script type="text/javascript" src="http://api.map.baidu.com/api?v=2.0&ak=Z7q0WBomr1GbD6HVGSD6GyBIrkqeoFhi">
//v2.0版本的引用方式:src="http://api.map.baidu.com/api?v=2.0&ak=您的密钥"
</script>
</head>  <body>
<div id="container"></div>
<script type="text/javascript">
var map = new BMap.Map("container");
// 创建地图实例
map.enableScrollWheelZoom();           //允许滑轮进行放大缩小
map.addControl(new BMap.NavigationControl());// 添加平移缩放控件
map.addControl(new BMap.ScaleControl());// 添加比例尺控件
var myP1 = new BMap.Point(104.088050401,30.6461552);  //声明点对象
var myP2 = new BMap.Point(103.89418873,30.89418873);
var myP3 = new BMap.Point(104.01765079,30.65644259);
// 创建点坐标
map.centerAndZoom(myP1 , 15);
// 初始化地图,设置中心点坐标和地图级别
map.clearOverlays();    //清空地图中的对象
var marker1 = new BMap.Marker(myP1);   //定义点样式,默认为红色水滴形状
var marker2 = new BMap.Marker(myP2);
var marker3 = new BMap.Marker(myP3);
map.addOverlay(marker1);   //添加点到地图
map.addOverlay(marker2);
map.addOverlay(marker3);
</script>
</body>
</html>

在浏览器中打开,展示结果如下:

实验总结:本实验使用出租车数据,用Kmeans把出租车轨迹点聚类,找出出租车出现密集的地方,并用地图的方式进行可视化展示。主要在数据分析时创建出KMeans算法的输入数据类型,如何创建模型进行可视化。

大数据Spark技术数据分析综合实验:出租车数据分析相关推荐

  1. Python+大数据-Spark技术栈(二)SparkBaseCore

    Python+大数据-Spark技术栈(二)SparkBase&Core 学习目标 掌握SparkOnYarn搭建 掌握RDD的基础创建及相关算子操作 了解PySpark的架构及角色 环境搭建 ...

  2. 大数据|Spark技术在京东智能供应链预测的应用案例深度剖析(一)

    大数据|Spark技术在京东智能供应链预测的应用案例深度剖析(一) 2017-03-27 11:58  浏览次数:148 1. 背景 前段时间京东公开了面向第二个十二年的战略规划,表示京东将全面走向技 ...

  3. 深圳地铁客流大数据 Spark 技术栈

    写在前面 学以致用,本项目通过对深圳市开放数据之轨道交通客流情况进行分析,了解深漂的我们每天在上下班都经历了些什么- 本系列项目以Spark技术栈为主, 花絮 SHOW DATABASES;CREAT ...

  4. 从小数据分析到大数据平台,这十几年来大数据开源技术是如何演进的?

    本文整理自QCon北京Fangjin Yang的英文主题演讲. 关注"大数据杂谈"公众号,点击"加群学习",更多大牛一手技术分享等着你. 演讲整理:刘继伟 在Q ...

  5. 如何用形象的比喻大数据的技术生态Hadoop、Hive、Spark 之间是什么关系?

    最近我的同学给我发了一篇特别有意思的关于大数据的技术生态Hadoop.Hive.Spark 关系的解读文章.个人觉得非常有意思,通俗易懂,我转载到这里,希望大家一起学习. Luis 大数据 255 人 ...

  6. 大数据应用技术课程教学改革与实践

    点击上方蓝字关注我们 大数据应用技术课程教学改革与实践 夏大文1,2, 王林1,2, 张乾1,2, 魏嘉银1,2, 冯夫健1,2, 李华青3,4 1 贵州民族大学数据科学与信息工程学院,贵州 贵阳 5 ...

  7. 海洋大数据关键技术及在灾害天气下船舶行为预测上的应用

    海洋大数据关键技术及在灾害天气下船舶行为预测上的应用 王冬海,卢峰,方晓蓉,郭刚 中电科海洋信息技术研究院有限公司,北京 100041 摘要:随着海洋数据量的爆炸式增长,海洋大数据受到越来越多的关注. ...

  8. 大数据 - 大数据开发技术课程总结(未完)

    1.课程介绍 大数据开发课程主要从了解大数据概念.特征开始,再介绍大数据Java开发和Hadoop的环境配置,较为全面地讲解了HDFS分布式存储,MapReduce分布式计算框架,Spark平台开发和 ...

  9. 大数据可视化技术面临的挑战及应对措施

    来源:科技导报 本文约5400字,建议阅读10分钟 本文介绍了适用于大数据的数据可视化技术,讨论了针对大数据可视化应用需求自主研发的交互式可视化设计平台AutoVis及其应用. [ 导读 ]本文从大数 ...

  10. 【2017年第4期】流式大数据实时处理技术、平台及应用

    陈纯 浙江大学计算机科学与技术学院,浙江 杭州 310058 摘要:大数据处理系统根据其时效性可分为批式大数据和流式大数据两类.上述两类系统均无法满足"事中"感知查询分析处理模式的 ...

最新文章

  1. android 适配
  2. 算法练习----java字符全排列
  3. 2018python培训-python培训哪里比较好?
  4. CLion上用platformIO开发esp32,CLion开发esp32详细配置流程
  5. python scale()函数_【Python菜鸟进阶大神】Matplotlib数据可视化007:词云
  6. 【ARM】Load Store指令
  7. java过滤器的原理_Java 三大器之过滤器(Filter)工作原理
  8. scrapy-redis 配置 settings
  9. Centos6.3安装KVM
  10. 计算机电源管理器的用途,联想电源管理软件调整电源模式有什么用?联想电源管理软件电源模式调整和用处...
  11. 从Android运行时出发,打造我们的脱壳神器 - zyq8709--dexhunter(二代抽取壳)
  12. 580刷590bios_老司机带你开车,迪兰570怒刷580BIOS超频至1430M
  13. 《人生十论》. 钱穆
  14. IE 代理服务器设置程序实现
  15. 关于STM8CAN产生bus-off如何自动恢复
  16. 群晖docker火狐_群晖docker安装chrome浏览器_动漫台
  17. Python基础入门知识(2)
  18. 快速幂+矩阵快速幂(总结+例题)
  19. 开课吧T31项目第14天
  20. 众里寻他千百度-百度发展的秘密

热门文章

  1. 浅谈:字符串、时间格式的转换
  2. FZU《C语言程序综合设计》
  3. effective c# 明白几个相等运算
  4. NFS在Centos 6.3下的安装
  5. 在Sharepoint2010配置SMTP服务
  6. C++内存管理之shared_ptr
  7. JVM知识点复习(第一次)
  8. php 1==#039;a1#039;,关于新版本1.9.14.6 加固 dex version 为 039 导致9.0以下无法修复的问题及疑惑。...
  9. 名字正则只能是中文英文_F开头的英文名字有哪些?英文名字典词典,根据中文名姓名发音起关联英文名,最强英文名取名攻略大全!...
  10. 鸿蒙os会给小米用吗,国内手机厂商是否支持鸿蒙?中兴正式回应!小米的态度很意外!...