//groupbykey

一、准备数据
val flights=sc.textFile("data/Flights/flights.csv")
val sampleFlights=sc.parallelize(flights.take(1000))
val header=sampleFlights.first
val filteredFlights=sampleFlights.filter(line=>{
line!=header&&line.split(",")(22)!=""
})

这里的准备数据使用的相对路劲

二、使用map函数获得自己想要计算的几个字段
val airLinesMap=filteredFlights.map(line=>{
val tailNum=line.split(",")(6)
val airline=line.split(",")(4)
(airline,tailNum)
})

三、使用groupbykey操作,合并行
val airlinesGroup= airLinesMap.distinct.groupByKey()
airlinesGroup.take(20).foreach(println)

四、计算每个航空公司的航班,当然也可以不用groupbykey直接使用reducebykey实现

//计算每个航空公司的航班
val airplanesCount =airlinesGroup.map(line=>{
(line._1,line._2.size)
})
airplanesCount.take(20).foreach(println)

五。计算飞机延误的几率

//计算延误的几率
val flightsMap=filteredFlights.map(flight=>{
var airline= flight.split(",")(4)
var delay = flight.split(",")(22)
(airline,delay)
})

以上获得需要计算的相关字段。

val flightDelays=flightsMap.groupByKey()
val delayChance= flightDelays.map(airline=>{
var count=0
var totalCount =airline._2.size
for (delay<-airline._2){
if(delay.toInt>0){
count+=1
}
}
(airline._1,(count+0.0)/totalCount)
})
delayChance.take(20).foreach(println)

这里使用了scala的for循环,直接把value里面的list值输入到一个变量delay里面去。

最新文章

  1. js中A包含B的写法与分割字符串的方法
  2. [题解]codevs1001 舒适的路线
  3. js笔记---拖动元素
  4. 用于 ‘Suse‘ Linux 包管理的 Zypper 命令大全
  5. Cookie rejected: Illegal path attribute &amp;quot;/nexus&amp;quot;. Path of origin: &amp;quot;/content/&amp;quot; 解
  6. startActivityForResult与onActivityResult
  7. response.sendRedirect 报 java.lang.IllegalStateException 异常的解决思路
  8. java 接口测试
  9. SQL Server作业报错特殊案例
  10. JavaScript中Float类型保留两位小数
  11. 统一门户与业务系统的sso整合技术方案(单点登录)
  12. learning makefile grammar
  13. 用SignalTap进行硬件仿真
  14. JSPatch解析
  15. 30分钟搞定后台登录界面(103个后台PSD源文件、素材网站)
  16. USACO 6.1 A Rectangular Barn
  17. 使用标准模板find函数来对结构体容器进行查找
  18. leetcode-686-Repeated String Match(重复多少次A能够找到B)
  19. OpenCV学习(12) 图像的腐蚀与膨胀(3)
  20. 【BZOJ】3502 PA2012 Tanie linie

热门文章

  1. javascript 运算符优先级
  2. 浅谈一下mshta在CVE-2017-11882里的命令构造
  3. 嵌入式Linux内核tasklet机制(附实测代码)
  4. vue学习笔记——组件的优化
  5. MongoDB基础知识(二)
  6. 当VUE 遇到微信js api
  7. tomcat的 tomcat-user.xml
  8. 【常用命令】Linux相关命令
  9. [UE4]Throbber,横向动态图标
  10. linux怎么样显示命令历史后又显示命令的输入时间