大数据入门到精通10--spark rdd groupbykey的使用
//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的使用的更多相关文章
- 大数据入门到精通5--spark 的 RDD 的 reduce方法使用
培训系列5--spark 的 RDD 的 reduce方法使用 1.spark-shell环境下准备数据 val collegesRdd= sc.textFile("/user/hdfs/C ...
- 大数据入门到精通4--spark的rdd的map使用方式
学习了之前的rdd的filter以后,这次来讲spark的map方式 1.获得文件 val collegesRdd= sc.textFile("/user/hdfs/CollegeNavig ...
- 大数据入门到精通2--spark rdd 获得数据的三种方法
通过hdfs或者spark用户登录操作系统,执行spark-shell spark-shell 也可以带参数,这样就覆盖了默认得参数 spark-shell --master yarn --num-e ...
- 大数据入门到精通8-spark RDD 复合key 和复合value 的map reduce操作
一.做基础数据准备 这次使用fights得数据. scala> val flights= sc.textFile("/user/hdfs/data/Flights/flights.cs ...
- 大数据入门到精通3-SPARK RDD filter 以及 filter 函数
一.如何处理RDD的filter 1. 把第一行的行头去掉 scala> val collegesRdd= sc.textFile("/user/hdfs/CollegeNavigat ...
- 大数据入门到精通11-spark dataframe 基础操作
// dataframe is the topic 一.获得基础数据.先通过rdd的方式获得数据 val ny= sc.textFile("data/new_york/")val ...
- 大数据入门到精通6---spark rdd reduce by key 的使用方法
1.前期数据准备(同之前的章节) val collegesRdd= sc.textFile("/user/hdfs/CollegeNavigator.csv")val header ...
- 大数据入门到精通18--sqoop 导入关系库到hdfs中和hive表中
一,选择数据库,这里使用标准mysql sakila数据库 mysql -u root -D sakila -p 二.首先尝试把表中的数据导入到hdfs文件中,这样后续就可以使用spark来dataf ...
- 大数据入门到精通12--spark dataframe 注册成hive 的临时表
一.获得最初的数据并形成dataframe val ny= sc.textFile("data/new_york/")val header=ny.firstval filterNY ...
随机推荐
- cocos2dx开发之util类&方法——取范围随机数
#include <random> int random(int start, int end) { //return start+rand()%(end-start+1); static ...
- python学习之路03
一.常量和变量 1.python中的数据类型 分类: Number:数字型[整型,浮点型,复数] String:字符串型 Boolean:布尔型[True,False] None:空值 ...
- cordova文件传输系统插件使用:cordova-plugin-file-transfer
1. 添加插件:cordova plugin add cordova-plugin-file-transfer 2. 调用方法: var fileTransfer = new FileTransfer ...
- Linux内核分析第七次作业
分析Linux内核创建一个新进程的过程 Linux中创建进程一共有三个函数: 1. fork,创建子进程 2. vfork,与fork类似,但是父子进程共享地址空间,而且子进程先于父进程运行. 3. ...
- MDX函数
MDX重点函数 成员函数 1..CurrentMember 获取运行时当前的成员,用法:<Dimension>.CurrentMember . 2..Parent 获取运行时当前的成员的父 ...
- 更多FMK 的还是看万一的吧
http://www.cnblogs.com/del/category/323943.html 记录一下, 作为目录
- 执行sql语句为什么?用PreparedStatement要比Statement好用
PreparedStatement public interface PreparedStatement extends Statement;可以看到PreparedStatement是Stateme ...
- 【mybatis】之trim
<trim prefix="where" prefixOverrides="where" suffixOverrides="and"& ...
- commit lint规范化团队git提交信息
一.快速提交符号angular编码规范的提交信息 1.命令行中安装commitizen: npm install -g commitizen commitizen init cz-convention ...
- C++Primer第五版——习题答案详解(五)
习题答案目录:https://www.cnblogs.com/Mered1th/p/10485695.html 第6章 函数 练习6.4 #include<iostream> using ...