第一题
1、 在/home/hadoop/traffic目录下,数据文件“violation.txt”为违章条目对照表,内含违章代码、扣分数、罚款金额、违法内容等,请使用sortBy算子找出扣分最多的条目Top3。
violation数据
X01 2 200 超速10%-20%
X02 6 300 超速20%-50%
X03 12 500 超速50%以上
X04 6 200 不按信号灯行驶(闯红灯)
X05 3 200 不按交通标识行驶
X06 3 150 逆向行驶
X07 1 150 接打电话
X08 1 150 斑马线不礼让行人
X09 12 2000 交通事故逃逸,尚不构成犯罪
X10 12 1000 驾驶与驾驶证载明的准驾车型不相符合的车辆
X11 6 300 公路客运车辆违反规定载货的
X12 2 500 公路客运车辆载客超过核定载客人数未达20%的
X13 6 800 公路客运车辆载客,超过额定乘员20%以上不足50%的
X14 6 1500 公路客运车辆载客超过额定乘员50%以上不足100%
<style body="red">
hadoop@Master:~$ vim violation.txt
hadoop@Master:~$ cat violation.txt
//违章代码、扣分数、罚款金额、违法内容
X01 2 200 超速10%-20%
X02 6 300 超速20%-50%
X03 12 500 超速50%以上
X04 6 200 不按信号灯行驶(闯红灯)
X05 3 200 不按交通标识行驶
X06 3 150 逆向行驶
X07 1 150 接打电话
X08 1 150 斑马线不礼让行人
X09 12 2000 交通事故逃逸,尚不构成犯罪
X10 12 1000 驾驶与驾驶证载明的准驾车型不相符合的车辆
X11 6 300 公路客运车辆违反规定载货的
X12 2 500 公路客运车辆载客超过核定载客人数未达20%的
X13 6 800 公路客运车辆载客,超过额定乘员20%以上不足50%的
X14 6 1500 公路客运车辆载客超过额定乘员50%以上不足100%
val violation=sc.textFile("file:///home/hadoop/tracffic/violation.txt")
val split_violation=violation.map(x=>x.split("\t"))
val tuple_violation=split_violation.map(x=>(x(0),x(1).trim.toInt,x(2),x(3)))
//trim.toInt转化为Int类型方便计算
val sort_violation=tuple_violation.sortBy(x=>x._2,false)
sort_violation.take(3)
//切换到scala页面
第二题
2、使用Spark-Shell完成以下任务 :读取records.txt和recordsCityB.txt数据使用union和filter算子找车辆AK0803在本市及临市B的交通违章记录。
records.txt数据
> 2020-1-05 A301 CZ8463 X04
2020-1-08 A301 MU0066 X01
2020-1-08 A301 CZ8463 X01
2020-1-08 C047 CZ8463 X02
2020-1-08 A301 CZ8463 X08
2020-1-10 C047 PW2306 X03
2020-1-10 A301 NR4542 X02
2020-1-10 A301 NR4542 X02
2020-1-10 A059 MU0066 X03
2020-1-10 C047 MU0066 X05
2020-1-10 B068 MU0066 X07
2020-1-10 C047 MR3328 X01
2020-1-10 C047 CZ8463 X04
2020-1-10 C047 CZ8463 X03
2020-1-10 C047 CQ9901 X01
2020-1-11 A059 MU1134 X03
2020-1-11 C047 MU0066 X01
2020-1-13 C047 MU0066 X05
2020-1-13 B068 AK0803 X02
2020-1-13 B068 AK0803 X04
2020-1-15 C047 CZ8463 X01
2020-1-18 C047 MU1237 X02
2020-1-18 B068 MK4875 X03
2020-1-18 A301 CZ8463 X06
2020-1-18 C047 CZ8463 X02
recordsCity数据
> 2020-1-14 8001 HZ6663 X02
2020-1-14 8011 HW1113 X03
2020-1-10 8011 CQ4481 X03
2020-1-12 8011 NX2549 X04
2020-1-15 6123 MU2497 X05
2020-1-15 6123 NU3080 X06
2020-1-15 6123 AK0803 X02
2020-1-15 6123 AK0694 X01
2020-1-15 6123 CZ8463 X10
2020-1-17 4074 MU1237 X11
2020-1-17 4074 MK4875 X07
2020-1-18 4074 MU1840 X08
2020-1-18 4074 CZ2407 X03
vim records.txt
cat records.txt
vim recordsCityB.txt
cat recordsCityB.txt
val records=sc.textFile("file:///home/hadoop/tracffic/records.txt")
val recordCityB=sc.textFile("file:///home/hadoop/tracffic/recordsCityB.txt")
val all=records.union(recordCityB)
//可以查看一下合并后的RDD
all.collect
//
val tupleAll=all.map(x=>x.split("\t")).map(x=>(x(0),x(1),x(2),x(3)))
tupleAll.filter(x=>x._3.equals("AK0803")).collect