《Spark大数据分析与实战》课件项目三 Spark RDD分析交通违章记录.pptx

《Spark大数据分析与实战》课件项目三 Spark RDD分析交通违章记录.pptx

  1. 1、本文档共89页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多

BigDataAnalyticswithSpark项目三SparkRDD分析交通违章记录

项目概述当前,机动车保有量持续上升,机动车成为居民出行、物流运输的主力军;某市部署了数百组交通监控设备,用于采集本辖区内的各类交通违法行为。抽取部分数据得到3张表格:违章记录表用于记录违章详情,包括违章日期、监控设备编号、车牌号、违法类型代码;车主信息表记录车主信息,包括车牌号、车主姓名、手机号;违章条目对照表记录交通违法条目信息,包括违法类型代码、扣分数、罚款金额、违法信息名称。现要求使用SparkRDD完成交通违法数据分析,为相关部门提供各类有用信息。数据样式如下所示:

项目效果使用SparkRDD,对交通违法数据分析发现,可以得到如下有价值的信息:(1)单次扣分最多的交通违法行为(违章代码、扣分数、罚款金额、违章名称)(2)某车辆的3次违章记录(日期、监控设备号、车牌号、违章代码)(3)累计扣12分以上的车主信息(车牌号、车主姓名、手机号)

目录任务1根据交通违章数据创建RDD找出扣分最高的交通违法条目查找某车辆的违章记录查找违章次数3次以上车辆任务2任务3任务4查找累计扣12分以上车辆信息任务5任务6各类文件的读写操作

思维导图

根据交通违章数据

创建RDD任务1RDD的概念以及SparkRDD创建方法。

弹性分布式数据集(ResilientDistributedDataset,简称RDD)是Spark中最基本的数据抽象,它代表一个不可变、可分区、所含元素可并行计算的集合。、RDD具有数据流模型的特点:自动容错、位置感知性调度和可伸缩性。作为一个容错且可以执行并行操作的元素的集合,SparkRDD屏蔽了复杂的底层分布式计算,为用户提供了一组方便的数据转换与求值方法。Spark中的计算过程可以简单抽象为对RDD的创建、转换和行动(返回操作结果)的过程,如下所示。1.1认识RDD

makeRDD:可以通过调用SparkContext的textFile()方法来读取文件(本地文件或HDFS文件等)并创建一个RDD,也可以对输入数据集合通过调用SparkContext的parallelize()方法来创建一个RDD。RDD被创建后不可被改变,只可以对RDD执行Transformation及Action操作。Transformation(转换)操作:对已有的RDD中的数据执行计算进行转换,并产生新的RDD,在这个过程中有时会产生中间RDD。Spark对于Transformation采用惰性计算机制,即在Transformation过程并不会立即计算结果,而是在Action才会执行计算过程。如map、filter、groupByKey、cache等方法,只执行Transformation操作,而不计算结果。Action(行动)操作:对已有的RDD中的数据执行计算产生结果,将结果返回Driver程序或写入到外部物理存储(如HDFS)。如reduce、collect、count、saveAsTextFile等方法,会对RDD中的数据执行计算。1.1认识RDD

使用SparkRDD技术进行分布式数据处理,首先要创建RDD;RDD的创建方法主要有三类:(1)从Seq集合中创建RDD;(2)从外部存储创建RDD;(3)从其他RDD创建。从集合中创建RDD,Spark主要提供了两种方法:parallelize和makeRDD;这两种方法都是利用内存中已有的数据,复制集合中的元素后创建一个可用于并行计算的分布式数据集RDD。1.2从Seq集合创建RDD

1.parallelize方法parallelize方式适用于做简单的spark测试、Spark学习,其定义下所示。1.2从Seq集合创建RDD

它有两个输入参数:Seq集合、分区(Partitions)数量;一个RDD在物理上可以被切分为多个Partition(即数据分区),这些Partition可以分布在不同的节点上。Partition是Spark计算任务的基本处理单位(每一个分区,都会被一个Task任务处理),有多少个分区就会有多少个任务,因此分区决定了并行计算的粒度。具体用法示例如下所示。1.2从Seq集合创建RDD

Spark-shell本身就是一个Driver(驱动节点),它会初始化一个SparkContext对象sc作为Spark程序的入口,用户可以直接调用;如下图,由sc调用parallelize(people,3)方法,创建了一个含有3个分区的RDD。一般情况下,需要为RDD设置合理的分区数量;如果partition数量太少,则直接影响是计算资源不能被充分利用。例如分配8个CPU内核

文档评论(0)

酱酱 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档