//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里面去。

大数据入门到精通10--spark rdd groupbykey的使用的更多相关文章

  1. 大数据入门到精通5--spark 的 RDD 的 reduce方法使用

    培训系列5--spark 的 RDD 的 reduce方法使用 1.spark-shell环境下准备数据 val collegesRdd= sc.textFile("/user/hdfs/C ...

  2. 大数据入门到精通4--spark的rdd的map使用方式

    学习了之前的rdd的filter以后,这次来讲spark的map方式 1.获得文件 val collegesRdd= sc.textFile("/user/hdfs/CollegeNavig ...

  3. 大数据入门到精通2--spark rdd 获得数据的三种方法

    通过hdfs或者spark用户登录操作系统,执行spark-shell spark-shell 也可以带参数,这样就覆盖了默认得参数 spark-shell --master yarn --num-e ...

  4. 大数据入门到精通8-spark RDD 复合key 和复合value 的map reduce操作

    一.做基础数据准备 这次使用fights得数据. scala> val flights= sc.textFile("/user/hdfs/data/Flights/flights.cs ...

  5. 大数据入门到精通3-SPARK RDD filter 以及 filter 函数

    一.如何处理RDD的filter 1. 把第一行的行头去掉 scala> val collegesRdd= sc.textFile("/user/hdfs/CollegeNavigat ...

  6. 大数据入门到精通11-spark dataframe 基础操作

    // dataframe is the topic 一.获得基础数据.先通过rdd的方式获得数据 val ny= sc.textFile("data/new_york/")val ...

  7. 大数据入门到精通6---spark rdd reduce by key 的使用方法

    1.前期数据准备(同之前的章节) val collegesRdd= sc.textFile("/user/hdfs/CollegeNavigator.csv")val header ...

  8. 大数据入门到精通18--sqoop 导入关系库到hdfs中和hive表中

    一,选择数据库,这里使用标准mysql sakila数据库 mysql -u root -D sakila -p 二.首先尝试把表中的数据导入到hdfs文件中,这样后续就可以使用spark来dataf ...

  9. 大数据入门到精通12--spark dataframe 注册成hive 的临时表

    一.获得最初的数据并形成dataframe val ny= sc.textFile("data/new_york/")val header=ny.firstval filterNY ...

随机推荐

  1. 利用maven的profiles灵活的配置多环境

    <!--多环境配置--> <profiles> <profile> <id>dev</id> <activation> < ...

  2. 如何将docker镜像文件上传至Docker Hub

    一.Docker Hub中新建存储库 注册,登录Docker Hub之后,点击右上角Create Repository,创建存储库,如下图所示: 取个名字,我这里取名为lihui_demo.并且可以选 ...

  3. CCF-模板生成系统-201509-3

    主要是string---STL的运用 趁机整理一下erase, find, substr, replace, insert #include <bits/stdc++.h> using n ...

  4. 基于VM上的Ubuntu16.04如何和window界面进行复制,粘贴工作

    1.卸载VMware tools: sudo apt-get autoremove open-vm-tools 2.安装界面版VMware tools. sudo apt-get install op ...

  5. js生成的验证码

    例1 <!DOCTYPE html><html> <head> <meta charset="UTF-8"> <title&g ...

  6. ios-改变图片的尺寸

    //改变图片的尺寸 -(UIImage*) OriginImage:(UIImage *)image scaleToSize:(CGSize)size { UIGraphicsBeginImageCo ...

  7. 数字证书的理解以及自建CA机构颁发证书

    一.理解什么是数字证书   http://www.cnblogs.com/JeffreySun/archive/2010/06/24/1627247.html    理解数字证书等概念,无数次想好好看 ...

  8. C++ std::async vs async/await in C# - Stack Overflow

    C++ std::async vs async/await in C# - Stack Overflow 我想知道新的c ++功能std::async是否与两个C#关键字async / await相当 ...

  9. 论文阅读笔记:【MDNet】

    [MDNET]: H Nam, B Han. Learning multi-domain convolutional neural networks for visual tracking[C]. / ...

  10. git初始化本地项目及关联github远程库

    一.初始化本地项目 idea中在项目文件夹下执行:git init . 二.在github官网上创建一个库 三.执行如下命令关联远程库: git remote add origin 你创建的git远程 ...